zabbix_export:
  version: '6.0'
  date: '2023-10-26T10:53:01Z'
  groups:
    - uuid: e960332b3f6c46a1956486d4f3f99fce
      name: 'Templates/Server hardware'
  templates:
    - uuid: d50f6dcfc3e44244a0fc9fd933607024
      template: 'HPE iLO by HTTP'
      name: 'HPE iLO by HTTP'
      description: |
        This template is designed for the effortless deployment of HPE iLO monitoring by Zabbix via iLO RESTful API and doesn't require any external scripts.
        
        Setup:
        
        1. Create the iLO user for monitoring (for example, `zbx_monitor`). The user will only need to have the `Login` privilege, which can be assigned manually or by assigning the `ReadOnly` role to the user.
        2. Set the iLO API endpoint URL in the `{$ILO.URL}` macro in the format `<scheme>://<host>[:port]/` (port is optional).
        3. Set the name of the user that you created in step 1 in the `{$ILO.USER}` macro.
        4. Set the password of the user that you created in step 1 in the `{$ILO.PASSWORD}` macro.
        
        For more details about HPE Redfish services, refer to the official documentation:
        https://servermanagementportal.ext.hpe.com/docs/redfishservices/
        
        Generated by official Zabbix template tool "Templator"
      groups:
        - name: 'Templates/Server hardware'
      items:
        - uuid: 3c2d368291294faa98c01a27f36ad805
          name: 'HPE iLO: Get data'
          type: SCRIPT
          key: hpe.ilo.get_data
          delay: '{$ILO.INTERVAL}'
          history: '0'
          trends: '0'
          value_type: TEXT
          params: |
            var ilo = {
                params: {},
                session_token: "",
                session_url: "",
            
                setParams: function (params) {
                    ['ilo_url', 'user', 'password'].forEach(function (field) {
                        if (typeof params !== 'object' || typeof params[field] === 'undefined'
                            || params[field] === '') {
                            throw 'Required parameter is not set: "' + field + '".';
                        }
                    });
            
                    ilo.params = params;
            
                    if (typeof ilo.params.ilo_url === 'string' && !ilo.params.ilo_url.endsWith('/')) {
                        ilo.params.ilo_url += '/';
                    }
                },
            
                apiAuth: function () {
                    var request = new HttpRequest(),
                        response,
                        headers,
                        url = encodeURI(ilo.params.ilo_url + 'redfish/v1/SessionService/Sessions/'),
                        auth_data = {
                            UserName: ilo.params.user,
                            Password: ilo.params.password
                        };
            
                    request.addHeader('Content-Type: application/json');
                    request.addHeader('Authorization: Basic ' + btoa(ilo.params.user + ':' + ilo.params.password));
            
                    if (typeof ilo.params.http_proxy !== 'undefined' && ilo.params.http_proxy !== '') {
                        request.setProxy(ilo.params.http_proxy);
                        Zabbix.log(4, '[ HPE iLO ] Using HTTP proxy: ' + ilo.params.http_proxy);
                    }
            
                    Zabbix.log(4, '[ HPE iLO ] Sending request: ' + url);
            
                    response = request.post(url, JSON.stringify(auth_data));
            
                    Zabbix.log(4, '[ HPE iLO ] Received response with status code ' + request.getStatus() + ': ' + response);
            
                    if (request.getStatus() != 201) {
                        throw 'Authentication failed with status code ' + request.getStatus() + ': ' + response;
                    }
            
                    try {
                        response = JSON.parse(response);
                    }
                    catch (error) {
                        throw 'Failed to parse auth response received from API. Check debug log for more information.';
                    }
            
                    try {
                        headers = request.getHeaders();
                    }
                    catch (error) {
                        throw 'Failed to parse auth headers received from API. Check debug log for more information.';
                    }
            
                    try {
                        ilo.session_token = headers['X-Auth-Token'];
                        ilo.session_url = headers['Location'];
                    }
                    catch (error) {
                        throw 'Failed to retrieve auth token or session URL from API. Check debug log for more information.';
                    }
            
                    delete request;
                },
            
                apiLogout: function () {
                    var request = new HttpRequest(),
                        response,
                        url = encodeURI(ilo.session_url);
            
                    request.addHeader('X-Auth-Token: ' + ilo.session_token);
            
                    if (typeof ilo.params.http_proxy !== 'undefined' && ilo.params.http_proxy !== '') {
                        request.setProxy(ilo.params.http_proxy);
                        Zabbix.log(4, '[ HPE iLO ] Using HTTP proxy: ' + ilo.params.http_proxy);
                    }
            
                    Zabbix.log(4, '[ HPE iLO ] Sending request: ' + url);
            
                    response = request.delete(url);
            
                    Zabbix.log(4, '[ HPE iLO ] Received response with status code ' + request.getStatus() + ': ' + response);
            
                    if (request.getStatus() != 200) {
                        throw 'Deleting of session failed with status code ' + request.getStatus() + ': ' + response;
                    }
            
                    delete request;
                },
            
                apiRequest: function (query) {
                    var request = new HttpRequest(),
                        response,
                        url = encodeURI(ilo.params.ilo_url + query);
            
                    if (typeof ilo.params.http_proxy !== 'undefined' && ilo.params.http_proxy !== '') {
                        request.setProxy(ilo.params.http_proxy);
                        Zabbix.log(4, '[ HPE iLO ] Using HTTP proxy: ' + ilo.params.http_proxy);
                    }
            
                    request.addHeader('X-Auth-Token: ' + ilo.session_token);
            
                    Zabbix.log(4, '[ HPE iLO ] Sending request: ' + url);
            
                    response = request.get(url);
            
                    Zabbix.log(4, '[ HPE iLO ] Received response with status code ' + request.getStatus() + ': ' + response);
            
                    if (request.getStatus() < 200 || request.getStatus() >= 300) {
                        throw 'Request failed with status code ' + request.getStatus() + ': ' + response;
                    }
            
                    try {
                        response = JSON.parse(response);
                    }
                    catch (error) {
                        throw 'Failed to parse response received from API. Check debug log for more information.';
                    }
            
                    delete request;
            
                    return response;
                },
            
                checkArray: function (array) {
                    return typeof array !== 'undefined' && Array.isArray(array) && array.length > 0 ? true : false;
                }
            };
            
            try {
                ilo.setParams(JSON.parse(value));
                ilo.apiAuth();
                var systems = [],
                    storages = [],
                    controllers = [],
                    drives = [],
                    volumes = [],
                    chassis = [],
                    fans = [],
                    sensors = [],
                    psu = [],
                    managers = [];
            
                var get_systems = ilo.apiRequest('redfish/v1/Systems?$expand=.');
            
                if (ilo.checkArray(get_systems.Members)) {
                    for (i in get_systems.Members) {
                        if ('Id' in get_systems.Members[i]) {
                            if (get_systems.Members[i].HostName === null) {
                                get_systems.Members[i].HostName = get_systems.Members[i].Id;
                            }
            
                            systems.push(get_systems.Members[i]);
            
                            var system_storages = ilo.apiRequest('redfish/v1/Systems/' + get_systems.Members[i].Id + '/Storage?$expand=.');
            
                            if (ilo.checkArray(system_storages.Members)) {
                                for (j in system_storages.Members) {
                                    system_storages.Members[j].systemHostname = get_systems.Members[i].HostName;
                                    system_storages.Members[j].systemType = get_systems.Members[i].SystemType;
                                    system_storages.Members[j].systemId = get_systems.Members[i].Id;
            
                                    storages.push(system_storages.Members[j]);
            
                                    if ('Id' in system_storages.Members[j]) {
                                        var storage_controllers = ilo.apiRequest('redfish/v1/Systems/' + get_systems.Members[i].Id + '/Storage/' + system_storages.Members[j].Id + '/Controllers?$expand=.');
            
                                        if (ilo.checkArray(storage_controllers.Members)) {
                                            for (k in storage_controllers.Members) {
                                                storage_controllers.Members[k].systemHostname = get_systems.Members[i].HostName;
                                                storage_controllers.Members[k].systemType = get_systems.Members[i].SystemType;
                                                storage_controllers.Members[k].systemId = get_systems.Members[i].Id;
                                                storage_controllers.Members[k].storageId = system_storages.Members[j].Id;
            
                                                controllers.push(storage_controllers.Members[k]);
                                            }
                                        }
            
                                        var storage_drives = ilo.apiRequest('redfish/v1/Systems/' + get_systems.Members[i].Id + '/Storage/' + system_storages.Members[j].Id + '?$expand=.');
            
                                        if (ilo.checkArray(storage_drives.Drives)) {
                                            for (k in storage_drives.Drives) {
                                                storage_drives.Drives[k].systemHostname = get_systems.Members[i].HostName;
                                                storage_drives.Drives[k].systemType = get_systems.Members[i].SystemType;
                                                storage_drives.Drives[k].systemId = get_systems.Members[i].Id;
                                                storage_drives.Drives[k].storageId = system_storages.Members[j].Id;
            
                                                drives.push(storage_drives.Drives[k]);
                                            }
                                        }
            
                                        var storage_volumes = ilo.apiRequest('redfish/v1/Systems/' + get_systems.Members[i].Id + '/Storage/' + system_storages.Members[j].Id + '/Volumes?$expand=.');
            
                                        if (ilo.checkArray(storage_volumes.Members)) {
                                            for (k in storage_volumes.Members) {
                                                storage_volumes.Members[k].systemHostname = get_systems.Members[i].HostName;
                                                storage_volumes.Members[k].systemType = get_systems.Members[i].SystemType;
                                                storage_volumes.Members[k].systemId = get_systems.Members[i].Id;
                                                storage_volumes.Members[k].storageId = system_storages.Members[j].Id;
            
                                                volumes.push(storage_volumes.Members[k]);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            
                var get_chassis = ilo.apiRequest('redfish/v1/Chassis?$expand=.');
            
                if (ilo.checkArray(get_chassis.Members)) {
                    for (i in get_chassis.Members) {
                        if ('Id' in get_chassis.Members[i]) {
                            chassis.push(get_chassis.Members[i]);
            
                            chassis_thermal = ilo.apiRequest('redfish/v1/Chassis/' + get_chassis.Members[i].Id + '/Thermal/');
            
                            if (ilo.checkArray(chassis_thermal.Fans)) {
                                for (j in chassis_thermal.Fans) {
                                    chassis_thermal.Fans[j].chassisId = get_chassis.Members[i].Id;
            
                                    fans.push(chassis_thermal.Fans[j]);
                                }
                            }
            
                            if (ilo.checkArray(chassis_thermal.Temperatures)) {
                                for (j in chassis_thermal.Temperatures) {
                                    chassis_thermal.Temperatures[j].chassisId = get_chassis.Members[i].Id;
            
                                    sensors.push(chassis_thermal.Temperatures[j]);
                                }
                            }
            
                            chassis_power = ilo.apiRequest('redfish/v1/Chassis/' + get_chassis.Members[i].Id + '/Power/');
            
                            if (ilo.checkArray(chassis_power.PowerSupplies)) {
                                for (j in chassis_power.PowerSupplies) {
                                    chassis_power.PowerSupplies[j].chassisId = get_chassis.Members[i].Id;
            
                                    psu.push(chassis_power.PowerSupplies[j]);
                                }
                            }
                        }
                    }
                }
            
                var get_managers = ilo.apiRequest('redfish/v1/Managers?$expand=.');
            
                if (ilo.checkArray(get_managers.Members)) {
                    for (i in get_managers.Members) {
                        if ('Id' in get_managers.Members[i]) {
                            managers.push(get_managers.Members[i]);
                        }
                    }
                }
            
                ilo.apiLogout();
            
                return JSON.stringify({
                    'systems': systems,
                    'storages': storages,
                    'controllers': controllers,
                    'drives': drives,
                    'volumes': volumes,
                    'chassis': chassis,
                    'fans': fans,
                    'sensors': sensors,
                    'psu': psu,
                    'managers': managers
                });
            }
            catch (error) {
                error += (String(error).endsWith('.')) ? '' : '.';
                Zabbix.log(3, '[ HPE iLO ] ERROR: ' + error);
                return JSON.stringify({ error: error });
            }
          description: 'The JSON with the result of API requests.'
          timeout: '{$ILO.TIMEOUT}'
          parameters:
            - name: http_proxy
              value: '{$ILO.HTTP_PROXY}'
            - name: ilo_url
              value: '{$ILO.URL}'
            - name: password
              value: '{$ILO.PASSWORD}'
            - name: user
              value: '{$ILO.USER}'
          tags:
            - tag: component
              value: raw
        - uuid: 7378f10ce1314462ba2f9d80562f5430
          name: 'HPE iLO: Get data check'
          type: DEPENDENT
          key: hpe.ilo.get_data.check
          delay: '0'
          history: 7d
          trends: '0'
          value_type: CHAR
          description: 'The data collection check.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.error
              error_handler: CUSTOM_VALUE
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: hpe.ilo.get_data
          tags:
            - tag: component
              value: status
          triggers:
            - uuid: b3327a76234b4ac6b049dec49bdd6a78
              expression: 'length(last(/HPE iLO by HTTP/hpe.ilo.get_data.check))>0'
              name: 'HPE iLO: Failed to get data from API'
              priority: HIGH
              description: 'Failed to get data from API. Check the debug log for more information.'
              tags:
                - tag: scope
                  value: availability
      discovery_rules:
        - uuid: cffc30494f1140eb88e67c38cca64243
          name: 'HPE iLO: Computer systems discovery'
          type: DEPENDENT
          key: hpe.ilo.computer_systems.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.MATCHES:"System"}'
                formulaid: A
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.NOT_MATCHES:"System"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.MATCHES:"System"}'
                formulaid: C
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.NOT_MATCHES:"System"}'
                operator: NOT_MATCHES_REGEX
                formulaid: D
          description: 'Discovers computer systems.'
          item_prototypes:
            - uuid: 2815e03a856e4c0389ee2fb545d6c97f
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: BIOS current version'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.bios.current_version[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The current BIOS version of the computer system.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Oem.Hpe.Bios.Current.VersionString
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: inventory
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
              trigger_prototypes:
                - uuid: 2f207309d0724a2e8e93c13967fc8eed
                  expression: 'change(/HPE iLO by HTTP/hpe.ilo.computer_system.bios.current_version[{#SYSTEM_ID}])=1 and length(last(/HPE iLO by HTTP/hpe.ilo.computer_system.bios.current_version[{#SYSTEM_ID}]))>0'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: BIOS version has changed'
                  event_name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: BIOS version has changed (new version: {ITEM.VALUE})'
                  priority: INFO
                  description: 'The current version of BIOS has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 4c05d540ca87440bbf251bdf61d31a5d
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the computer system.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.systems[?(@.Id == ''{#SYSTEM_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: raw
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
            - uuid: cd7fc29d4de64b0f8fb754451d5764e3
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Model'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.model[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The model name of the computer system.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Model
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: inventory
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
            - uuid: 74a4746fec48417bb5e1ce6f341936f4
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Serial number'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.serial_number[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The serial number of the computer system.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.SerialNumber
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: inventory
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
              trigger_prototypes:
                - uuid: 060a4bcb1cdd463884fd95272464530d
                  expression: 'change(/HPE iLO by HTTP/hpe.ilo.computer_system.serial_number[{#SYSTEM_ID}])=1 and length(last(/HPE iLO by HTTP/hpe.ilo.computer_system.serial_number[{#SYSTEM_ID}]))>0'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Computer system has been replaced'
                  priority: INFO
                  description: 'The computer system serial number has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 30a1ab95416a42779abe242ac264d813
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.status[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              description: |
                The overall health state from the view of this computer system. Possible values:
                
                0 - "OK", the computer system is in normal condition;
                1 - "Warning", the computer system is in condition that requires attention;
                2 - "Critical", the computer system is in critical condition that requires immediate attention;
                10 - "Unknown", the computer system is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.HealthRollup
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: health
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
              trigger_prototypes:
                - uuid: 438fdce5e1374b5a94b0206cdd4a2728
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.computer_system.status[{#SYSTEM_ID}])=2'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Computer system is in critical state'
                  priority: HIGH
                  description: 'The computer system is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: 704b86207b3a443a8359b3d75c92d0b4
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.computer_system.status[{#SYSTEM_ID}])=1'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Computer system is in warning state'
                  priority: WARNING
                  description: 'The computer system is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Computer system is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.computer_system.status[{#SYSTEM_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
            - uuid: 09d4a47c8ba94c4c83e47bbd58ec6cc7
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: System type'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.type[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              description: |
                The type of the computer system. Possible values:
                
                0 - "Physical", a computer system;
                1 - "Virtual", a virtual machine instance running on this system;
                2 - "OS", an operating system instance;
                3 - "PhysicallyPartitioned", a hardware-based partition of a computer system;
                4 - "VirtuallyPartitioned", a virtual or software-based partition of a computer system;
                5 - "DPU", a virtual or software-based partition of a computer system;
                10 - "Unknown", the computer system type is unknown.
              valuemap:
                name: 'Computer system type'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.SystemType
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'Physical',
                          'Virtual',
                          'OS',
                          'PhysicallyPartitioned',
                          'VirtuallyPartitioned',
                          'DPU'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: inventory
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
            - uuid: 19cb6014269c4e548daa07526c0eac95
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: CPU utilization, in %'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.usage.cpu_util[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              units: '%'
              description: 'Current CPU utilization of the computer system in percentage.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Oem.Hpe.SystemUsage.CPUUtil
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: cpu
                - tag: component
                  value: performance
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
            - uuid: 7c71b7e1963c499d8a4151aba47da539
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: I/O bus utilization, in %'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.usage.io_bus_util[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              units: '%'
              description: 'Current I/O bus utilization of the computer system in percentage.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Oem.Hpe.SystemUsage.IOBusUtil
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: performance
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
            - uuid: 13b463539dbb4692a4635bdef2a76367
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Memory bus utilization, in %'
              type: DEPENDENT
              key: 'hpe.ilo.computer_system.usage.memory_bus_util[{#SYSTEM_ID}]'
              delay: '0'
              history: 7d
              units: '%'
              description: 'Current memory bus utilization of the computer system in percentage.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Oem.Hpe.SystemUsage.MemoryBusUtil
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'hpe.ilo.computer_system.get_data[{#SYSTEM_ID}]'
              tags:
                - tag: component
                  value: computer-system
                - tag: component
                  value: memory
                - tag: component
                  value: performance
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
          graph_prototypes:
            - uuid: 04f4386139054afea962586af56afd46
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Resources usage'
              ymin_type_1: FIXED
              ymax_type_1: FIXED
              graph_items:
                - color: 199C0D
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.computer_system.usage.cpu_util[{#SYSTEM_ID}]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.computer_system.usage.io_bus_util[{#SYSTEM_ID}]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.computer_system.usage.memory_bus_util[{#SYSTEM_ID}]'
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#SYSTEM_HOSTNAME}'
              path: $.hostname
            - lld_macro: '{#SYSTEM_ID}'
              path: $.system_id
            - lld_macro: '{#SYSTEM_TYPE}'
              path: $.system_type
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var systems = JSON.parse(value).systems;
                  
                  result = systems.map(function (system) {
                      return {
                          'hostname': system.HostName,
                          'system_type': system.SystemType,
                          'system_id': system.Id
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: bcb9da9c36e94c6f9fe7fbc4ddd96a9e
          name: 'HPE iLO: Controllers discovery'
          type: DEPENDENT
          key: hpe.ilo.controllers.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.MATCHES:"Controller"}'
                formulaid: A
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.NOT_MATCHES:"Controller"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.MATCHES:"Controller"}'
                formulaid: C
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.NOT_MATCHES:"Controller"}'
                operator: NOT_MATCHES_REGEX
                formulaid: D
          description: 'Discovers storage controllers.'
          item_prototypes:
            - uuid: aa246b9ca7454479b9396851f4be67aa
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.controller.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the controller.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.controllers[?(@.systemId == ''{#SYSTEM_ID}'' && @.storageId == ''{#STORAGE_ID}'' && @.Id == ''{#CONTROLLER_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: component
                  value: controller
                - tag: component
                  value: raw
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: controller
                  value: '{#CONTROLLER_ID}'
                - tag: location
                  value: '{#CONTROLLER_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: 5aeac2d722a14086b64980e0cd4a985a
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Model'
              type: DEPENDENT
              key: 'hpe.ilo.controller.model[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The model name of the controller.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Model
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.controller.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              tags:
                - tag: component
                  value: controller
                - tag: component
                  value: inventory
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: controller
                  value: '{#CONTROLLER_ID}'
                - tag: location
                  value: '{#CONTROLLER_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: 5a8101bfc94b48d2b67fd6670949ab96
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Serial number'
              type: DEPENDENT
              key: 'hpe.ilo.controller.serial_number[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The serial number of the controller.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.SerialNumber
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.controller.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              tags:
                - tag: component
                  value: controller
                - tag: component
                  value: inventory
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: controller
                  value: '{#CONTROLLER_ID}'
                - tag: location
                  value: '{#CONTROLLER_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
              trigger_prototypes:
                - uuid: 66694866af4e49d7becb699c29b73b3e
                  expression: 'change(/HPE iLO by HTTP/hpe.ilo.controller.serial_number[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}])=1 and length(last(/HPE iLO by HTTP/hpe.ilo.controller.serial_number[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]))>0'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Controller has been replaced'
                  priority: INFO
                  description: 'The controller serial number has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 6c0527d5f10b4be0a9384de104128a9b
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.controller.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              delay: '0'
              history: 7d
              description: |
                The health state of the controller. Possible values:
                
                0 - "OK", the controller is in normal condition;
                1 - "Warning", the controller is in condition that requires attention;
                2 - "Critical", the controller is in critical condition that requires immediate attention;
                10 - "Unknown", the controller is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.Health
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.controller.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}]'
              tags:
                - tag: component
                  value: controller
                - tag: component
                  value: health
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: controller
                  value: '{#CONTROLLER_ID}'
                - tag: storage
                  value: '{#STORAGE_ID}'
              trigger_prototypes:
                - uuid: c50abeed60fe4b5a95dd788606fbddda
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.controller.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}])=2'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Controller is in critical state'
                  priority: HIGH
                  description: 'The controller is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: b4fff1c834a04b66843937b1a56fe7d1
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.controller.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}])=1'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Controller is in warning state'
                  priority: WARNING
                  description: 'The controller is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Controller [{#CONTROLLER_ID}]: Controller is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.controller.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#CONTROLLER_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#CONTROLLER_ID}'
              path: $.id
            - lld_macro: '{#CONTROLLER_LOCATION}'
              path: $.location
            - lld_macro: '{#STORAGE_ID}'
              path: $.storage_id
            - lld_macro: '{#SYSTEM_HOSTNAME}'
              path: $.system_hostname
            - lld_macro: '{#SYSTEM_ID}'
              path: $.system_id
            - lld_macro: '{#SYSTEM_TYPE}'
              path: $.system_type
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var controllers = JSON.parse(value).controllers;
                  
                  result = controllers.map(function (controller) {
                      return {
                          'id': controller.Id,
                          'location': controller.Location.PartLocation.ServiceLabel,
                          'system_id': controller.systemId,
                          'system_hostname': controller.systemHostname,
                          'system_type': controller.systemType,
                          'storage_id': controller.storageId
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: c750bdc5aa05415d9556a0182f2b5c65
          name: 'HPE iLO: Drives discovery'
          type: DEPENDENT
          key: hpe.ilo.drives.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.MATCHES:"Drive"}'
                formulaid: A
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.NOT_MATCHES:"Drive"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.MATCHES:"Drive"}'
                formulaid: C
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.NOT_MATCHES:"Drive"}'
                operator: NOT_MATCHES_REGEX
                formulaid: D
          description: 'Discovers storage drives.'
          item_prototypes:
            - uuid: c3935598d1b14f8a9ceaadd315ffd64e
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Capacity'
              type: DEPENDENT
              key: 'hpe.ilo.drive.capacity[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: 7d
              units: B
              description: 'The capacity of the drive.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.CapacityBytes
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: 408d4190763c476599dbb8793ee09a65
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the drive.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.drives[?(@.systemId == ''{#SYSTEM_ID}'' && @.storageId == ''{#STORAGE_ID}'' && @.Id == ''{#DRIVE_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: raw
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: 368329ea2b4b45b2ac5edfb103002915
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Media type'
              type: DEPENDENT
              key: 'hpe.ilo.drive.media_type[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: 7d
              description: 'The media type of the drive.'
              valuemap:
                name: 'Media type'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.MediaType
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'HDD',
                          'SSD'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: 9800f0f0171542de87508f062c1397e7
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Model'
              type: DEPENDENT
              key: 'hpe.ilo.drive.model[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The model name of the drive.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Model
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: inventory
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: a8cf9573ca704edab0fd130a0a3bda76
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Predicted media life left, in %'
              type: DEPENDENT
              key: 'hpe.ilo.drive.predicted_life_left[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: 7d
              discover: NO_DISCOVER
              units: '%'
              description: 'The percentage of reads and writes that are predicted to still be available for the drive.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.PredictedMediaLifeLeftPercent
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: 3122f6ef74f84974b8094022f86f68bb
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Serial number'
              type: DEPENDENT
              key: 'hpe.ilo.drive.serial_number[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The serial number of the drive.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.SerialNumber
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: inventory
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
              trigger_prototypes:
                - uuid: 723b48e56ef447ab940c0e6bb6ecddd6
                  expression: 'change(/HPE iLO by HTTP/hpe.ilo.drive.serial_number[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}])=1 and length(last(/HPE iLO by HTTP/hpe.ilo.drive.serial_number[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]))>0'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Drive has been replaced'
                  priority: INFO
                  description: 'The drive serial number has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: a2218789f4734f72921665308dc3eb5d
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Status indicator'
              type: DEPENDENT
              key: 'hpe.ilo.drive.status_indicator[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              delay: '0'
              history: 7d
              description: |
                Status of drive. Possible values:
                
                0 - "OK", the drive is ok;
                1 - "Fail", the drive has failed;
                2 - "Rebuild", the drive is being rebuilt;
                3 - "PredictiveFailureAnalysis", the drive is still working but predicted to fail soon;
                4 - "Hotspare", the drive is marked to be automatically rebuilt and used as a replacement for a failed drive;
                5 - "InACriticalArray", the array that this drive is a part of is degraded;
                6 - "InAFailedArray	", the array that this drive is a part of is failed;
                10 - "Unknown", the drive status is unknown.
              valuemap:
                name: 'Drive status'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.StatusIndicator
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Fail',
                          'Rebuild',
                          'PredictiveFailureAnalysis',
                          'Hotspare',
                          'InACriticalArray',
                          'InAFailedArray'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.drive.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}]'
              tags:
                - tag: component
                  value: drive
                - tag: component
                  value: health
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: drive
                  value: '{#DRIVE_ID}'
                - tag: location
                  value: '{#DRIVE_LOCATION}'
                - tag: storage
                  value: '{#STORAGE_ID}'
              trigger_prototypes:
                - uuid: e58f3af90e124520bf0c138979480913
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.drive.status_indicator[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}])=1'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Drive has failed'
                  priority: HIGH
                  description: 'The drive has failed.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: d78d4771170d4668bc6c2ca941bf85f1
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.drive.status_indicator[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}])=3'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Drive is predicted to fail soon'
                  priority: HIGH
                  description: 'The drive is still working but predicted to fail soon.'
                  dependencies:
                    - name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Drive [{#DRIVE_ID}]: Drive has failed'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.drive.status_indicator[{#SYSTEM_ID}, {#STORAGE_ID}, {#DRIVE_ID}])=1'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#DRIVE_ID}'
              path: $.id
            - lld_macro: '{#DRIVE_LOCATION}'
              path: $.location
            - lld_macro: '{#DRIVE_TYPE}'
              path: $.media_type
            - lld_macro: '{#STORAGE_ID}'
              path: $.storage_id
            - lld_macro: '{#SYSTEM_HOSTNAME}'
              path: $.system_hostname
            - lld_macro: '{#SYSTEM_ID}'
              path: $.system_id
            - lld_macro: '{#SYSTEM_TYPE}'
              path: $.system_type
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var drives = JSON.parse(value).drives;
                  
                  result = drives.map(function (drive) {
                      return {
                          'id': drive.Id,
                          'location': drive.PhysicalLocation.PartLocation.ServiceLabel,
                          'media_type': drive.MediaType,
                          'system_id': drive.systemId,
                          'system_hostname': drive.systemHostname,
                          'system_type': drive.systemType,
                          'storage_id': drive.storageId
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
          overrides:
            - name: 'Predicted media life left'
              step: '1'
              filter:
                conditions:
                  - macro: '{#DRIVE_TYPE}'
                    value: SSD
                    formulaid: A
              operations:
                - operationobject: ITEM_PROTOTYPE
                  operator: REGEXP
                  value: 'Predicted media life left'
                  discover: DISCOVER
        - uuid: 98061dca5146498ea5f663b229cb7ba9
          name: 'HPE iLO: Fans discovery'
          type: DEPENDENT
          key: hpe.ilo.fans.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#FAN_STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          description: 'Discovers chassis fans.'
          item_prototypes:
            - uuid: bd8bceea000a4677b982b56a119ece7e
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.fan.get_data[{#CHASSIS_ID}, {#FAN_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the fan.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.fans[?(@.chassisId == ''{#CHASSIS_ID}'' && @.MemberId == ''{#FAN_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: environment
                - tag: component
                  value: fan
                - tag: component
                  value: raw
                - tag: fan
                  value: '{#FAN_ID}'
            - uuid: d30cdb96ceb9470dbba0b30112c3a05b
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Speed, in %'
              type: DEPENDENT
              key: 'hpe.ilo.fan.speed[{#CHASSIS_ID}, {#FAN_ID}]'
              delay: '0'
              history: 7d
              units: '%'
              description: 'The current speed of the fan.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Reading
              master_item:
                key: 'hpe.ilo.fan.get_data[{#CHASSIS_ID}, {#FAN_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: environment
                - tag: component
                  value: fan
                - tag: component
                  value: performance
                - tag: fan
                  value: '{#FAN_ID}'
            - uuid: 4006994b11a54c5fa3eda5516b8ca94e
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.fan.status[{#CHASSIS_ID}, {#FAN_ID}]'
              delay: '0'
              history: 7d
              description: |
                The health state of the fan. Possible values:
                
                0 - "OK", the fan is in normal condition;
                1 - "Warning", the fan is in condition that requires attention;
                2 - "Critical", the fan is in critical condition that requires immediate attention;
                10 - "Unknown", the fan is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.Health
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.fan.get_data[{#CHASSIS_ID}, {#FAN_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: environment
                - tag: component
                  value: fan
                - tag: component
                  value: health
                - tag: fan
                  value: '{#FAN_ID}'
              trigger_prototypes:
                - uuid: c46cf15eae394d3a812ff660382a498c
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.fan.status[{#CHASSIS_ID}, {#FAN_ID}])=2'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Fan is in critical state'
                  priority: HIGH
                  description: 'The fan is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: de0dd5f0180c433d8fcf77411c4af0d1
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.fan.status[{#CHASSIS_ID}, {#FAN_ID}])=1'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Fan is in warning state'
                  priority: WARNING
                  description: 'The fan is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Fan is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.fan.status[{#CHASSIS_ID}, {#FAN_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          graph_prototypes:
            - uuid: f38e4d46dbe647c0a1cafb4f034d6fa2
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Speed, in %'
              ymin_type_1: FIXED
              ymax_type_1: FIXED
              graph_items:
                - color: 199C0D
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.fan.speed[{#CHASSIS_ID}, {#FAN_ID}]'
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#CHASSIS_ID}'
              path: $.chassis_id
            - lld_macro: '{#FAN_ID}'
              path: $.id
            - lld_macro: '{#FAN_NAME}'
              path: $.name
            - lld_macro: '{#FAN_STATE}'
              path: $.state
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var fans = JSON.parse(value).fans;
                  
                  result = fans.map(function (fan) {
                      return {
                          'id': fan.MemberId,
                          'name': fan.Name,
                          'chassis_id': fan.chassisId,
                          'state': fan.Status.State
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: da0b4a3eea8f45e384e565e40f017abc
          name: 'HPE iLO: Managers discovery'
          type: DEPENDENT
          key: hpe.ilo.managers.discovery
          delay: '0'
          description: 'Discovers managers.'
          item_prototypes:
            - uuid: 822317e3e16741c88cc749d5f5b7e67c
              name: 'HPE iLO: Manager [{#MANAGER_ID}]: Current firmware version'
              type: DEPENDENT
              key: 'hpe.ilo.manager.firmware.current_version[{#MANAGER_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The current firmware version of the manager.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.FirmwareVersion
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.manager.get_data[{#MANAGER_ID}]'
              tags:
                - tag: component
                  value: inventory
                - tag: component
                  value: manager
                - tag: manager
                  value: '{#MANAGER_ID}'
              trigger_prototypes:
                - uuid: d15f89292b3b4b309bee523a0d46217b
                  expression: 'change(/HPE iLO by HTTP/hpe.ilo.manager.firmware.current_version[{#MANAGER_ID}])=1 and length(last(/HPE iLO by HTTP/hpe.ilo.manager.firmware.current_version[{#MANAGER_ID}]))>0'
                  name: 'HPE iLO: Manager [{#MANAGER_ID}]: Firmware version has changed'
                  event_name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Firmware version has changed (new version: {ITEM.VALUE})'
                  priority: INFO
                  description: 'The current firmware version of the manager has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 1ae004d3b9804fbe9d62325999e9cabd
              name: 'HPE iLO: Manager [{#MANAGER_ID}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.manager.get_data[{#MANAGER_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the manager.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.managers[?(@.Id == ''{#MANAGER_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: component
                  value: manager
                - tag: component
                  value: raw
                - tag: manager
                  value: '{#MANAGER_ID}'
            - uuid: 20008a9fb19841edb7901dc8304bfdf8
              name: 'HPE iLO: Manager [{#MANAGER_ID}]: Model'
              type: DEPENDENT
              key: 'hpe.ilo.manager.model[{#MANAGER_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The model name of the manager.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Model
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.manager.get_data[{#MANAGER_ID}]'
              tags:
                - tag: component
                  value: inventory
                - tag: component
                  value: manager
                - tag: manager
                  value: '{#MANAGER_ID}'
            - uuid: f178ab2358d842e98d137fcf62ba5dba
              name: 'HPE iLO: Manager [{#MANAGER_ID}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.manager.status[{#MANAGER_ID}]'
              delay: '0'
              history: 7d
              description: |
                The health state of the manager. Possible values:
                
                0 - "OK", the manager is in normal condition;
                1 - "Warning", the manager is in condition that requires attention;
                2 - "Critical", the manager is in critical condition that requires immediate attention;
                10 - "Unknown", the manager is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.Health
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.manager.get_data[{#MANAGER_ID}]'
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: manager
                - tag: manager
                  value: '{#MANAGER_ID}'
              trigger_prototypes:
                - uuid: faa446c01db44748bf68b08f5d3491cd
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.manager.status[{#MANAGER_ID}])=2'
                  name: 'HPE iLO: Manager [{#MANAGER_ID}]: Manager is in critical state'
                  priority: HIGH
                  description: 'The manager is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: 1835e489df4942d3bb6ffba0e68d838e
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.manager.status[{#MANAGER_ID}])=1'
                  name: 'HPE iLO: Manager [{#MANAGER_ID}]: Manager is in warning state'
                  priority: WARNING
                  description: 'The manager is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Manager [{#MANAGER_ID}]: Manager is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.manager.status[{#MANAGER_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
            - uuid: fab6652c9346461eb232342fa8b88b95
              name: 'HPE iLO: Manager [{#MANAGER_ID}]: Manager type'
              type: DEPENDENT
              key: 'hpe.ilo.manager.type[{#MANAGER_ID}]'
              delay: '0'
              history: 7d
              description: |
                The manager type. Possible values:
                
                0 - "ManagementController", a controller used primarily to monitor or manage the operation of a device or system;
                1 - "EnclosureManager", a controller which provides management functions for a chassis or group of devices or systems;
                2 - "BMC", a controller which provides management functions for a single computer system;
                10 - "Unknown", the manager type is unknown.
              valuemap:
                name: 'Manager type'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.ManagerType
                  error_handler: DISCARD_VALUE
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'ManagementController',
                          'EnclosureManager',
                          'BMC'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.manager.get_data[{#MANAGER_ID}]'
              tags:
                - tag: component
                  value: manager
                - tag: manager
                  value: '{#MANAGER_ID}'
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#MANAGER_ID}'
              path: $.manager_id
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var managers = JSON.parse(value).managers;
                  
                  result = managers.map(function (manager) {
                      return {
                          'manager_id': manager.Id
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: 853ddc0701b545fd807c7a688cd16f18
          name: 'HPE iLO: PSU discovery'
          type: DEPENDENT
          key: hpe.ilo.psu.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#PSU_STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: A
          description: 'Discovers chassis power supply units (PSU).'
          item_prototypes:
            - uuid: adb24bee15a341ffbe51047c0798a906
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.psu.get_data[{#CHASSIS_ID}, {#PSU_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the PSU.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.psu[?(@.chassisId == ''{#CHASSIS_ID}'' && @.MemberId == ''{#PSU_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: power
                - tag: component
                  value: raw
                - tag: psu
                  value: '{#PSU_ID}'
            - uuid: c51caa30b1ab4399a1132e4c3ea50c9f
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Last power output'
              type: DEPENDENT
              key: 'hpe.ilo.psu.last_power_output[{#CHASSIS_ID}, {#PSU_ID}]'
              delay: '0'
              history: 7d
              units: W
              description: 'The average power output of the PSU.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.LastPowerOutputWatts
              master_item:
                key: 'hpe.ilo.psu.get_data[{#CHASSIS_ID}, {#PSU_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: performance
                - tag: component
                  value: power
                - tag: psu
                  value: '{#PSU_ID}'
            - uuid: d3edb80dc18f4a92ac06a0025b7e1a76
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Line input voltage'
              type: DEPENDENT
              key: 'hpe.ilo.psu.line_input_voltage[{#CHASSIS_ID}, {#PSU_ID}]'
              delay: '0'
              history: 7d
              units: V
              description: 'The line input voltage at which the PSU is operating.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.LineInputVoltage
              master_item:
                key: 'hpe.ilo.psu.get_data[{#CHASSIS_ID}, {#PSU_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: performance
                - tag: component
                  value: power
                - tag: psu
                  value: '{#PSU_ID}'
            - uuid: f7594bdb44d1464c8cf1476ceb473215
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Model'
              type: DEPENDENT
              key: 'hpe.ilo.psu.model[{#CHASSIS_ID}, {#PSU_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The model name of the PSU.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Model
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.psu.get_data[{#CHASSIS_ID}, {#PSU_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: inventory
                - tag: component
                  value: power
                - tag: psu
                  value: '{#PSU_ID}'
            - uuid: 96a3b57288e94c71b4f8ac15bc7a8a14
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Serial number'
              type: DEPENDENT
              key: 'hpe.ilo.psu.serial_number[{#CHASSIS_ID}, {#PSU_ID}]'
              delay: '0'
              history: 7d
              trends: '0'
              value_type: CHAR
              description: 'The serial number of the PSU.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.SerialNumber
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.psu.get_data[{#CHASSIS_ID}, {#PSU_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: inventory
                - tag: component
                  value: power
                - tag: psu
                  value: '{#PSU_ID}'
              trigger_prototypes:
                - uuid: 4a20457b63f14f9dba0e57a4a1be9336
                  expression: 'change(/HPE iLO by HTTP/hpe.ilo.psu.serial_number[{#CHASSIS_ID}, {#PSU_ID}])=1 and length(last(/HPE iLO by HTTP/hpe.ilo.psu.serial_number[{#CHASSIS_ID}, {#PSU_ID}]))>0'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: PSU has been replaced'
                  priority: INFO
                  description: 'The PSU serial number has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 5194da566bce4f7ca1073ab56201d32b
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.psu.status[{#CHASSIS_ID}, {#PSU_ID}]'
              delay: '0'
              history: 7d
              description: |
                The health state of the PSU. Possible values:
                
                0 - "OK", the PSU is in normal condition;
                1 - "Warning", the PSU is in condition that requires attention;
                2 - "Critical", the PSU is in critical condition that requires immediate attention;
                10 - "Unknown", the PSU is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.Health
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.psu.get_data[{#CHASSIS_ID}, {#PSU_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: health
                - tag: component
                  value: power
                - tag: psu
                  value: '{#PSU_ID}'
              trigger_prototypes:
                - uuid: 5e35becc5b6f4a0b8aee83bd85053dfa
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.psu.status[{#CHASSIS_ID}, {#PSU_ID}])=2'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: PSU is in critical state'
                  priority: HIGH
                  description: 'The PSU is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: 6a905448f75c47c09392668b9b636117
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.psu.status[{#CHASSIS_ID}, {#PSU_ID}])=1'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: PSU is in warning state'
                  priority: WARNING
                  description: 'The PSU is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: PSU is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.psu.status[{#CHASSIS_ID}, {#PSU_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          graph_prototypes:
            - uuid: 34dea1e5a61b48fd9fe98af7752bf8b4
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Last power output'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.psu.last_power_output[{#CHASSIS_ID}, {#PSU_ID}]'
            - uuid: 4325a96130604ad3a03165f7573f2980
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Line input voltage'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.psu.line_input_voltage[{#CHASSIS_ID}, {#PSU_ID}]'
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#CHASSIS_ID}'
              path: $.chassis_id
            - lld_macro: '{#PSU_ID}'
              path: $.id
            - lld_macro: '{#PSU_STATE}'
              path: $.state
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var power_supplies = JSON.parse(value).psu;
                  
                  result = power_supplies.map(function (psu) {
                      return {
                          'id': psu.MemberId,
                          'chassis_id': psu.chassisId,
                          'state': psu.Status.State
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: c984c9668b7b46b19240f7593acf1088
          name: 'HPE iLO: Temperature sensors discovery'
          type: DEPENDENT
          key: hpe.ilo.sensors.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#SENSOR_CONTEXT}'
                value: '{$ILO.SENSOR.DISCOVERY.CONTEXT.MATCHES}'
                formulaid: A
              - macro: '{#SENSOR_CONTEXT}'
                value: '{$ILO.SENSOR.DISCOVERY.CONTEXT.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
              - macro: '{#SENSOR_NAME}'
                value: '{$ILO.SENSOR.DISCOVERY.NAME.MATCHES}'
                formulaid: C
              - macro: '{#SENSOR_NAME}'
                value: '{$ILO.SENSOR.DISCOVERY.NAME.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
                formulaid: D
              - macro: '{#SENSOR_STATE}'
                value: Absent
                operator: NOT_MATCHES_REGEX
                formulaid: E
          description: 'Discovers chassis temperature sensors.'
          item_prototypes:
            - uuid: 0067035f746a4317988d70844e71dd7a
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.sensor.get_data[{#CHASSIS_ID}, {#SENSOR_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the sensor.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.sensors[?(@.chassisId == ''{#CHASSIS_ID}'' && @.MemberId == ''{#SENSOR_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: environment
                - tag: component
                  value: raw
                - tag: component
                  value: sensor
                - tag: sensor
                  value: '{#SENSOR_ID}'
                - tag: sensor-context
                  value: '{#SENSOR_CONTEXT}'
            - uuid: ef3c3472c21a4716b9b3362e7b33644c
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.sensor.status[{#CHASSIS_ID}, {#SENSOR_ID}]'
              delay: '0'
              history: 7d
              description: |
                The health state of the sensor. Possible values:
                
                0 - "OK", the sensor is in normal condition;
                1 - "Warning", the sensor is in condition that requires attention;
                2 - "Critical", the sensor is in critical condition that requires immediate attention;
                10 - "Unknown", the sensor is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.Health
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.sensor.get_data[{#CHASSIS_ID}, {#SENSOR_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: environment
                - tag: component
                  value: health
                - tag: component
                  value: sensor
                - tag: sensor
                  value: '{#SENSOR_ID}'
                - tag: sensor-context
                  value: '{#SENSOR_CONTEXT}'
              trigger_prototypes:
                - uuid: 143900a50f0044f884fe04ba32afe38d
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.sensor.status[{#CHASSIS_ID}, {#SENSOR_ID}])=2'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Sensor is in critical state'
                  priority: HIGH
                  description: 'The sensor is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: 66c09f1d58ee436f96cb2d8e034fce05
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.sensor.status[{#CHASSIS_ID}, {#SENSOR_ID}])=1'
                  name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Sensor is in warning state'
                  priority: WARNING
                  description: 'The sensor is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Sensor is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.sensor.status[{#CHASSIS_ID}, {#SENSOR_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
            - uuid: 04e0faf0a3b54f84a13341bab1238b60
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Temperature'
              type: DEPENDENT
              key: 'hpe.ilo.sensor.temperature[{#CHASSIS_ID}, {#SENSOR_ID}]'
              delay: '0'
              history: 7d
              units: '!°C'
              description: 'The current temperature reading in Celsius degrees for the sensor.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.ReadingCelsius
              master_item:
                key: 'hpe.ilo.sensor.get_data[{#CHASSIS_ID}, {#SENSOR_ID}]'
              tags:
                - tag: chassis
                  value: '{#CHASSIS_ID}'
                - tag: component
                  value: environment
                - tag: component
                  value: performance
                - tag: component
                  value: sensor
                - tag: sensor
                  value: '{#SENSOR_ID}'
                - tag: sensor-context
                  value: '{#SENSOR_CONTEXT}'
          graph_prototypes:
            - uuid: 4e9fadd38f52413a8c5d24b53971d5be
              name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Temperature'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'HPE iLO by HTTP'
                    key: 'hpe.ilo.sensor.temperature[{#CHASSIS_ID}, {#SENSOR_ID}]'
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#CHASSIS_ID}'
              path: $.chassis_id
            - lld_macro: '{#SENSOR_CONTEXT}'
              path: $.context
            - lld_macro: '{#SENSOR_ID}'
              path: $.id
            - lld_macro: '{#SENSOR_NAME}'
              path: $.name
            - lld_macro: '{#SENSOR_STATE}'
              path: $.state
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var sensors = JSON.parse(value).sensors;
                  
                  result = sensors.map(function (sensor) {
                      return {
                          'id': sensor.MemberId,
                          'name': sensor.Name,
                          'chassis_id': sensor.chassisId,
                          'state': sensor.Status.State,
                          'context': sensor.PhysicalContext
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: d4942c1c86f543fd9270e2b3ea867ab9
          name: 'HPE iLO: Storages discovery'
          type: DEPENDENT
          key: hpe.ilo.storages.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.MATCHES:"Storage"}'
                formulaid: A
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.NOT_MATCHES:"Storage"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.MATCHES:"Storage"}'
                formulaid: C
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.NOT_MATCHES:"Storage"}'
                operator: NOT_MATCHES_REGEX
                formulaid: D
          description: 'Discovers computer system storages.'
          item_prototypes:
            - uuid: 51a5467f6d5948da803123a360ca2973
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.storage.get_data[{#SYSTEM_ID}, {#STORAGE_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the storage.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.storages[?(@.systemId == ''{#SYSTEM_ID}'' && @.Id == ''{#STORAGE_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: component
                  value: raw
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: storage
                  value: '{#STORAGE_ID}'
            - uuid: bec36e3da5ed4d71808669b5e298a62a
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.storage.status[{#SYSTEM_ID}, {#STORAGE_ID}]'
              delay: '0'
              history: 7d
              description: |
                The overall health state from the view of this storage. Possible values:
                
                0 - "OK", the storage is in normal condition;
                1 - "Warning", the storage is in condition that requires attention;
                2 - "Critical", the storage is in critical condition that requires immediate attention;
                10 - "Unknown", the storage is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.HealthRollup
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.storage.get_data[{#SYSTEM_ID}, {#STORAGE_ID}]'
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: storage
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: storage
                  value: '{#STORAGE_ID}'
              trigger_prototypes:
                - uuid: 3cbf371fee974ae18cc48a5c8751d002
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.storage.status[{#SYSTEM_ID}, {#STORAGE_ID}])=2'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Storage is in critical state'
                  priority: HIGH
                  description: 'The computer system is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: f7971c1b03874ba38d56e97cecb415f8
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.storage.status[{#SYSTEM_ID}, {#STORAGE_ID}])=1'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Storage is in warning state'
                  priority: WARNING
                  description: 'The computer system is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Storage is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.storage.status[{#SYSTEM_ID}, {#STORAGE_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#STORAGE_ID}'
              path: $.id
            - lld_macro: '{#STORAGE_NAME}'
              path: $.name
            - lld_macro: '{#SYSTEM_HOSTNAME}'
              path: $.system_hostname
            - lld_macro: '{#SYSTEM_ID}'
              path: $.system_id
            - lld_macro: '{#SYSTEM_TYPE}'
              path: $.system_type
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var storages = JSON.parse(value).storages;
                  
                  result = storages.map(function (storage) {
                      return {
                          'id': storage.Id,
                          'name': storage.name,
                          'system_id': storage.systemId,
                          'system_hostname': storage.systemHostname,
                          'system_type': storage.systemType
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
        - uuid: 5ca4da09031148b694152f042ddf890c
          name: 'HPE iLO: Volumes discovery'
          type: DEPENDENT
          key: hpe.ilo.volumes.discovery
          delay: '0'
          filter:
            evaltype: AND
            conditions:
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.MATCHES:"Volume"}'
                formulaid: A
              - macro: '{#SYSTEM_HOSTNAME}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.NOT_MATCHES:"Volume"}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.MATCHES:"Volume"}'
                formulaid: C
              - macro: '{#SYSTEM_TYPE}'
                value: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.NOT_MATCHES:"Volume"}'
                operator: NOT_MATCHES_REGEX
                formulaid: D
          description: 'Discovers storage volumes.'
          item_prototypes:
            - uuid: 9128fbbb6f0a450abb03f427cf22210f
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: Capacity'
              type: DEPENDENT
              key: 'hpe.ilo.volume.capacity[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              delay: '0'
              history: 7d
              units: B
              description: 'The capacity of the volume.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.CapacityBytes
                  error_handler: DISCARD_VALUE
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.volume.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              tags:
                - tag: component
                  value: storage
                - tag: component
                  value: volume
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: storage
                  value: '{#STORAGE_ID}'
                - tag: volume
                  value: '{#VOLUME_ID}'
            - uuid: 709f9a2cf82445988bced0b404524e05
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: Get data'
              type: DEPENDENT
              key: 'hpe.ilo.volume.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              delay: '0'
              history: '0'
              trends: '0'
              value_type: TEXT
              description: 'Get data about the volume.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.volumes[?(@.systemId == ''{#SYSTEM_ID}'' && @.storageId == ''{#STORAGE_ID}'' && @.Id == ''{#VOLUME_ID}'')].first()'
                  error_handler: DISCARD_VALUE
              master_item:
                key: hpe.ilo.get_data
              tags:
                - tag: component
                  value: raw
                - tag: component
                  value: storage
                - tag: component
                  value: volume
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: storage
                  value: '{#STORAGE_ID}'
                - tag: volume
                  value: '{#VOLUME_ID}'
            - uuid: b42c7a7314a9463d959925fb5b0fd275
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: RAID level'
              type: DEPENDENT
              key: 'hpe.ilo.volume.raid_level[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              delay: '0'
              history: 7d
              description: 'The RAID level of the volume.'
              valuemap:
                name: 'RAID level'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.RAIDType
                  error_handler: DISCARD_VALUE
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'RAID0',
                          'RAID1',
                          'RAID3',
                          'RAID4',
                          'RAID5',
                          'RAID6',
                          'RAID10',
                          'RAID01',
                          'RAID6TP',
                          'RAID1E',
                          'RAID50',
                          'RAID60',
                          'RAID00',
                          'RAID10E',
                          'RAID1Triple',
                          'RAID10Triple',
                          'None'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 20;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 6h
              master_item:
                key: 'hpe.ilo.volume.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              tags:
                - tag: component
                  value: storage
                - tag: component
                  value: volume
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: storage
                  value: '{#STORAGE_ID}'
                - tag: volume
                  value: '{#VOLUME_ID}'
            - uuid: c4829f0dac1c42edad3161ac9df74ea6
              name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: Status'
              type: DEPENDENT
              key: 'hpe.ilo.volume.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              delay: '0'
              history: 7d
              description: |
                The health state of the volume. Possible values:
                
                0 - "OK", the volume is in normal condition;
                1 - "Warning", the volume is in condition that requires attention;
                2 - "Critical", the volume is in critical condition that requires immediate attention;
                10 - "Unknown", the volume is in unknown condition.
              valuemap:
                name: 'Redfish health state'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.Status.Health
                - type: JAVASCRIPT
                  parameters:
                    - |
                      const idx = [
                          'OK',
                          'Warning',
                          'Critical'
                      ].indexOf(value);
                      return idx !== -1 ? idx : 10;
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'hpe.ilo.volume.get_data[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}]'
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: storage
                - tag: component
                  value: volume
                - tag: computer-system
                  value: '{#SYSTEM_HOSTNAME}'
                - tag: storage
                  value: '{#STORAGE_ID}'
                - tag: volume
                  value: '{#VOLUME_ID}'
              trigger_prototypes:
                - uuid: eec0cede62004a56ac9ddce26be52f7f
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.volume.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}])=2'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: Volume is in critical state'
                  priority: HIGH
                  description: 'The volume is in critical condition that requires immediate attention.'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
                - uuid: fff82b7d4fea43ed8099fc43e1fc5421
                  expression: 'last(/HPE iLO by HTTP/hpe.ilo.volume.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}])=1'
                  name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: Volume is in warning state'
                  priority: WARNING
                  description: 'The volume is in condition that requires attention.'
                  dependencies:
                    - name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Storage [{#STORAGE_ID}]: Volume [{#VOLUME_ID}]: Volume is in critical state'
                      expression: 'last(/HPE iLO by HTTP/hpe.ilo.volume.status[{#SYSTEM_ID}, {#STORAGE_ID}, {#VOLUME_ID}])=2'
                  tags:
                    - tag: scope
                      value: availability
                    - tag: scope
                      value: performance
          master_item:
            key: hpe.ilo.get_data
          lld_macro_paths:
            - lld_macro: '{#STORAGE_ID}'
              path: $.storage_id
            - lld_macro: '{#SYSTEM_HOSTNAME}'
              path: $.system_hostname
            - lld_macro: '{#SYSTEM_ID}'
              path: $.system_id
            - lld_macro: '{#SYSTEM_TYPE}'
              path: $.system_type
            - lld_macro: '{#VOLUME_ID}'
              path: $.id
            - lld_macro: '{#VOLUME_NAME}'
              path: $.name
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - |
                  var volumes = JSON.parse(value).volumes;
                  
                  result = volumes.map(function (volume) {
                      return {
                          'id': volume.Id,
                          'name': volume.DisplayName,
                          'system_id': volume.systemId,
                          'system_hostname': volume.systemHostname,
                          'system_type': volume.systemType,
                          'storage_id': volume.storageId
                      };
                  });
                  
                  return JSON.stringify(result);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 6h
      tags:
        - tag: class
          value: hardware
        - tag: target
          value: hpe
        - tag: target
          value: ilo
      macros:
        - macro: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.MATCHES}'
          value: .+
          description: 'The computer system hostname regex filter to use in computer systems related metrics discovery for including. Can be used with the following context to include metrics of the particular entity: System, Storage, Controller, Drive, Volume.'
        - macro: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.HOSTNAME.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'The computer system hostname regex filter to use in computer systems related metrics discovery for excluding. Can be used with the following context to exclude metrics of the particular entity: System, Storage, Controller, Drive, Volume.'
        - macro: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.MATCHES}'
          value: .+
          description: 'The computer system type regex filter to use in computer systems related metrics discovery for including. Can be used with the following context to include metrics of the particular entity: System, Storage, Controller, Drive, Volume.'
        - macro: '{$ILO.COMPUTER_SYSTEM.DISCOVERY.TYPE.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'The computer system type regex filter to use in computer systems related metrics discovery for excluding. Can be used with the following context to exclude metrics of the particular entity: System, Storage, Controller, Drive, Volume.'
        - macro: '{$ILO.HTTP_PROXY}'
          description: 'The HTTP proxy for script items (set if needed). If the macro is empty, then no proxy is used.'
        - macro: '{$ILO.INTERVAL}'
          value: 1m
          description: 'The update interval for the script item that retrieves data from API.'
        - macro: '{$ILO.PASSWORD}'
          type: SECRET_TEXT
          description: 'The password of the user that is used for monitoring.'
        - macro: '{$ILO.SENSOR.DISCOVERY.CONTEXT.MATCHES}'
          value: .+
          description: 'The sensor physical context regex filter to use in temperature sensors discovery for including.'
        - macro: '{$ILO.SENSOR.DISCOVERY.CONTEXT.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'The sensor physical context regex filter to use in temperature sensors discovery for excluding.'
        - macro: '{$ILO.SENSOR.DISCOVERY.NAME.MATCHES}'
          value: .+
          description: 'The sensor name regex filter to use in temperature sensors discovery for including.'
        - macro: '{$ILO.SENSOR.DISCOVERY.NAME.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'The sensor name regex filter to use in temperature sensors discovery for excluding.'
        - macro: '{$ILO.TIMEOUT}'
          value: 15s
          description: 'The timeout threshold for the script item that retrieves data from API.'
        - macro: '{$ILO.URL}'
          description: 'The iLO API endpoint in the format "<scheme>://<host>[:port]/" (port is optional).'
        - macro: '{$ILO.USER}'
          description: 'The name of the user that is used for monitoring.'
      dashboards:
        - uuid: 20b6f76728a548698f1fb77efcf9c534
          name: 'HPE iLO: Overview'
          pages:
            - name: 'HPE iLO: Computer systems'
              widgets:
                - type: GRAPH_PROTOTYPE
                  width: '24'
                  height: '10'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid
                      value:
                        host: 'HPE iLO by HTTP'
                        name: 'HPE iLO: Computer system [{#SYSTEM_HOSTNAME}]: Resources usage'
                    - type: INTEGER
                      name: rows
                      value: '1'
            - name: 'HPE iLO: Fans'
              widgets:
                - type: GRAPH_PROTOTYPE
                  width: '24'
                  height: '10'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '2'
                    - type: GRAPH_PROTOTYPE
                      name: graphid
                      value:
                        host: 'HPE iLO by HTTP'
                        name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Fan [{#FAN_NAME}]: Speed, in %'
                    - type: INTEGER
                      name: rows
                      value: '2'
            - name: 'HPE iLO: Thermal sensors'
              widgets:
                - type: GRAPH_PROTOTYPE
                  width: '24'
                  height: '10'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '2'
                    - type: GRAPH_PROTOTYPE
                      name: graphid
                      value:
                        host: 'HPE iLO by HTTP'
                        name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: Sensor [{#SENSOR_NAME}]: Temperature'
                    - type: INTEGER
                      name: rows
                      value: '2'
            - name: 'HPE iLO: Power supplies'
              widgets:
                - type: GRAPH_PROTOTYPE
                  width: '24'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid
                      value:
                        host: 'HPE iLO by HTTP'
                        name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Line input voltage'
                    - type: INTEGER
                      name: rows
                      value: '1'
                - type: GRAPH_PROTOTYPE
                  'y': '5'
                  width: '24'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid
                      value:
                        host: 'HPE iLO by HTTP'
                        name: 'HPE iLO: Chassis [{#CHASSIS_ID}]: PSU [{#PSU_ID}]: Last power output'
                    - type: INTEGER
                      name: rows
                      value: '1'
      valuemaps:
        - uuid: 724ed4e07ca34bf594719298055a0837
          name: 'Computer system type'
          mappings:
            - value: '0'
              newvalue: Physical
            - value: '1'
              newvalue: Virtual
            - value: '2'
              newvalue: OS
            - value: '3'
              newvalue: PhysicallyPartitioned
            - value: '4'
              newvalue: VirtuallyPartitioned
            - value: '5'
              newvalue: DPU
            - value: '10'
              newvalue: Unknown
        - uuid: dacd46f1412e4ce2adfa0d938ebbc952
          name: 'Drive status'
          mappings:
            - value: '0'
              newvalue: OK
            - value: '1'
              newvalue: Fail
            - value: '2'
              newvalue: Rebuild
            - value: '3'
              newvalue: PredictiveFailureAnalysis
            - value: '4'
              newvalue: Hotspare
            - value: '5'
              newvalue: InACriticalArray
            - value: '6'
              newvalue: InAFailedArray
            - value: '10'
              newvalue: Unknown
        - uuid: 30627d058a064666b08c0bbdacd75fe3
          name: 'Manager type'
          mappings:
            - value: '0'
              newvalue: ManagementController
            - value: '1'
              newvalue: EnclosureManager
            - value: '2'
              newvalue: BMC
            - value: '10'
              newvalue: Unknown
        - uuid: aecddd070d53474eaca622da04842d53
          name: 'Media type'
          mappings:
            - value: '0'
              newvalue: HDD
            - value: '1'
              newvalue: SSD
            - value: '10'
              newvalue: Unknown
        - uuid: 0aab2ac5ea59435280e84683bc852d32
          name: 'RAID level'
          mappings:
            - value: '0'
              newvalue: RAID0
            - value: '1'
              newvalue: RAID1
            - value: '2'
              newvalue: RAID3
            - value: '3'
              newvalue: RAID4
            - value: '4'
              newvalue: RAID5
            - value: '5'
              newvalue: RAID6
            - value: '6'
              newvalue: RAID10
            - value: '7'
              newvalue: RAID01
            - value: '8'
              newvalue: RAID6TP
            - value: '9'
              newvalue: RAID1E
            - value: '10'
              newvalue: RAID50
            - value: '11'
              newvalue: RAID60
            - value: '12'
              newvalue: RAID00
            - value: '13'
              newvalue: RAID10E
            - value: '14'
              newvalue: RAID1Triple
            - value: '15'
              newvalue: RAID10Triple
            - value: '16'
              newvalue: None
            - value: '20'
              newvalue: Unknown
        - uuid: 267eae89956048769dcf6eb015b921ba
          name: 'Redfish health state'
          mappings:
            - value: '0'
              newvalue: OK
            - value: '1'
              newvalue: Warning
            - value: '2'
              newvalue: Critical
            - value: '10'
              newvalue: Unknown
