Intel NodeManager drivers

Overview

This driver implements support of Intel NodeManager platform via ironic vendor interface methods. Those methods are implemented as sending raw bytes over IPMI. Hardware with Intel NodeManager 1.5 or above is required, feature must be enabled via Flash Image Tool. The driver detects internal addresses of NodeManager device automatically. The main term for NodeManager is policy, which can be power, thermal or boot time. Each policy identified by policy_id (integer number from 0 to 255). Maximum numbers of policies which can be set at the same time limited by platform. For more detailed information see full specification [1].

Available drivers

Driver provided by ironic-staging-drivers are

agent_ipmitool_nm
Standard Ironic’s agent_ipmitool driver with Intel NodeManager as vendor extension
fake_nm
Used for testing of this vendor passthru extension.

Supported vendor passthru methods

In all examples below request/response are JSON bodies in the HTTP request or response.

get_nm_version

HTTP method
GET
Description
Get Intel Node Manager version.

Example of response:

{"firmware": "1.2", "ipmi": "3.0", "nm": "3.0", "patch": "7"}

get_nm_capabilities

HTTP method
GET
Description
Get Intel Node Manager capabilities.

Example of request:

{"domain_id": "platform", "policy_trigger": "none",
 "power_domain": "primary"}

Example of response:

{"domain_id": "platform", "max_correction_time": 100000,
 "max_limit_value": 4096, "max_policies": 16,
 "max_reporting_period": 32768, "min_correction_time": 10,
 "min_limit_value": 100, "min_reporting_period": 100,
 "power_domain": "primary"}

control_nm_policy

HTTP method
PUT
Description
Enable or disable Intel Node Manager policy control.

Example of request:

{"scope": "policy", "enable": false, "policy_id": 10}

set_nm_policy

HTTP method
PUT
Description
Set Intel Node Manager policy. This method creates new policy if provided policy_id is not present or changes current policy.

Example of request:

{"domain_id": "platform", "enable": true, "policy_id": 10,
 "policy_trigger": "none", "action": "alert", "power_domain": "primary",
 "target_limit": 200, "reporting_period": 20000}

get_nm_policy

HTTP method
GET
Description
Get Intel Node Manager policy.

Example of request:

{"domain_id": "platform", "policy_id": 11}

Example of response:

{"action": "alert", "correction_time": 10000, "cpu_power_correction": "auto",
 "created_by_nm": true, "domain_id": "platform", "enabled": true,
 "global_enabled": true, "per_domain_enabled": true,
 "policy_trigger": "none", "power_domain": "primary", "power_policy": false,
 "reporting_period": 20000, "storage": "persistent", "target_limit": 250,
 "trigger_limit": 300}

remove_nm_policy

HTTP method
DELETE
Description
Remove Intel Node Manager policy.

Example of request:

{"domain_id": "platform", "policy_id": 11}

set_nm_policy_suspend

HTTP method
PUT
Description
Set Intel Node Manager policy suspend periods.

Example of request:

{"domain_id": "platform", "policy_id": 10,
 "periods": [{"start": 10, "stop": 60, "days": ["monday", "tuesday"]}]}

For information about time periods calculation please read NodeManager specification.

get_nm_policy_suspend

HTTP method
GET
Description
Get Intel Node Manager policy suspend periods.

Example of request:

{"domain_id": "platform", "policy_id": 13}

Example of response:

{"domain_id": "platform", "policy_id": 13,
 "periods": [{"start": 20, "stop": 100, "days": ["monday", "tuesday"]},
             {"start": 30, "stop": 150, "days": ["friday", "sunday"]}]}

remove_nm_policy_suspend

HTTP method
DELETE
Description
Remove Intel Node Manager policy suspend periods.

Example of request:

{"domain_id": "platform", "policy_id": 13}

get_nm_statistics

HTTP method
GET
Description
Get Intel Node Manager statistics.

Example of request:

{"scope": "global", "domain_id": "platform", "parameter_name": "power"}

Example of response:

{"activation_state": true, "administrative_enabled": true,
 "average_value": 200, "current_value": 202, "domain_id": "platform",
 "maximum_value": 240, "measurement_state": true, "minimum_value": 150,
 "operational_state": true, "reporting_period": 2125,
 "timestamp": "2016-02-03T20:13:52"}

reset_nm_statistics

HTTP method
DELETE
Description
Reset Intel Node Manager statistics.

Example of request:

{"scope": "global", "domain_id": "platform"}