Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
The Hardware State Manager (HSM) inventories, monitors, and manages hardware, and tracks the logical and dynamic component states, such as roles, NIDs, and other basic metadata needed to provide most common administrative and operational functions. HSM is the single source of truth for the state of the system. It contains the component state and information on Redfish endpoints for communicating with components via Redfish. It also allows administrators to create partitions and groups for other uses.
HMS components are created during inventory discovery and provide a higher-level representation of the component, including state, NID, role (i.e. compute/service), subtype, and so on. Unlike ComponentEndpoints, however, they are not strictly linked to the parent RedfishEndpoint, and are not automatically deleted when the RedfishEndpoints are (though they can be deleted via a separate call). This is because these components can also represent abstract components, such as removed components (e.g. which would remain, but have their states changed to “Empty” upon removal).
This resource allows a mapping file (NodeMaps) to be uploaded that maps node xnames to Node IDs, and optionally, to roles and subroles. These mappings are used when discovering nodes for the first time. These mappings should be uploaded prior to discovery and should contain mappings for each valid node xname in the system, whether populated or not. Nodemap is a JSON file that contains the xname of the node, node ID, and optionally role and subrole. Role can be Compute, Application, Storage, Management etc. The NodeMaps collection can be uploaded to HSM automatically at install time by specifying it as a JSON file. As a result, the endpoints are then automatically discovered by REDS, and inventory discovery is performed by HSM. The desired NID numbers will be set as soon as the nodes are created using the NodeMaps collection.
It is recommended that Nodemaps are uploaded at install time before discovery happens. If they are uploaded after discovery, then the node xnames need to be manually updated with the correct NIDs. You can update NIDs for individual components by using PATCH /State/Components/{xname}/NID.
This resource shows the hardware inventory of the entire system and contains FRU information in location. All entries are displayed as a flat array.
Every component has FRU information. This resource shows the hardware inventory for all FRUs or for a specific FRU irrespective of the location. This information is constant regardless of where the hardware item is currently in the system. If a HWInventoryByLocation entry is currently populated with a piece of hardware, it will have the corresponding HWInventoryByFRU object embedded. This FRU info can also be looked up by FRU ID regardless of the current location.
This resource gets you information about a specific component and it’s sub-components. The xname can be a component, partition, ALL, or s0. Both ALL and s0 represent the entire system.
This is a BMC or other Redfish controller that has a Redfish entry point and Redfish service root. It is used to discover the components managed by this endpoint during discovery and handles all Redfish interactions by these subcomponents. If the endpoint has been discovered, this entry will include the ComponentEndpoint entries for these managed subcomponents. You can also create a Redfish Endpoint or update the definition for a Redfish Endpoint. The xname identifies the location of all components in the system, including chassis, controllers, nodes, and so on. Redfish endpoints are given to State Manager.
Component Endpoints are the specific URLs for each individual component that are under the Redfish endpoint. Component endpoints are discovered during inventory discovery. They are the management-plane representation of system components and are linked to the parent Redfish Endpoint. They provide a glue layer to bridge the higher-level representation of a component with how it is represented locally by Redfish.
The collection of ComponentEndpoints can be obtained in full, optionally filtered on certain criteria (e.g. obtain just Node components), or accessed by their xname IDs individually.
ServiceEndpoints help you do things on Redfish like updating the firmware. They are discovered during inventory discovery.
Groups are named sets of system components, most commonly nodes. A group groups components under an administratively chosen label (group name). Each component may belong to any number of groups. If a group has exclusiveGroup=
A partition is a formal, non-overlapping division of the system that forms an administratively distinct sub-system. Each component may belong to at most one partition. Partitions are used as an access control mechanism or for implementing multi-tenancy. You can create, modify, or delete a partition and its members. You can also use partitions as filters for other API calls.
A membership shows the association of a component xname to its set of group labels and partition names. There can be many group labels and up to one partition per component. Memberships are not modified directly, as the underlying group or partition is modified instead. A component can be removed from one of the listed groups or partitions or added via POST as well as being present in the initial set of members when a partition or group is created. You can retrieve the memberships for components or memberships for a specific xname.
Check discovery status for all components or you can track the status for a specific job ID. You can also check per-endpoint discover status for each RedfishEndpoint. Contains status information about the discovery operation for clients to query. The discover operation returns a link or links to status objects so that a client can determine when the discovery operation is complete.
Discover subcomponents by querying all RedfishEndpoints. Once the RedfishEndpoint objects are created, inventory discovery will query these controllers and create or update management plane and managed plane objects representing the components (e.g. nodes, node enclosures, node cards for Mountain chassis CMM endpoints).
Manage subscriptions to state change notifications (SCNs) from HSM. You can also subscribe to state change notifications by using the HMS Notification Fanout Daemon API.
When you manually create Redfish endpoints, the discovery is automatically initiated. You would create Redfish endpoints for components that are not automatically discovered by REDS or MEDS.
Check the Redfish endpoints that have been added and check the status of discovery.
Delete a specific Redfish endpoint.
Start inventory discovery of a system’s subcomponents by querying all Redfish endpoints. If needed, specify an ID or hostname (xname) in the payload.
Check the discovery status of all Redfish endpoints. You can also check the discovery status for each individual component by providing ID.
Retrieve all HMS Components found by inventory discovery as a named (“Components”) array.
Modify the component’s Enabled field.
Delete a specific HMS component by providing its xname. As noted, components are not automatically deleted when RedfishEndpoints or ComponentEndpoints are deleted.
Retrieve a list of desired components and their state. Select the nodes that you want to group.
Create the new group with desired members. Provide a group label (required), description, name, members etc. in the JSON payload.
Retrieve the group that was create with the label.
Retrieve the current state for all the components in the group.
Delete the group specified by {group_label}.
Prior State -> New State - Reason
Ready -> Standby - HBTD if node has many missed heartbeats
Ready -> Ready/Warning - HBTD if node has a few missed heartbeats
Standby -> Ready - HBTD Node re-starts heartbeating
On -> Ready - HBTD Node started heartbeating
Off -> Ready - HBTD sees heartbeats before Redfish Event (On)
Standby -> On - Redfish Event (On) or if re-discovered while in the standby state
Off -> On - Redfish Event (On)
Standby -> Off - Redfish Event (Off)
Ready -> Off - Redfish Event (Off)
On -> Off - Redfish Event (Off)
Any State -> Empty - Redfish Endpoint is disabled meaning component removal
Generally, nodes transition ‘Off’ -> ‘On’ -> ‘Ready’ when going from ‘Off’ to booted, and ‘Ready’ -> ‘Ready/Warning’ -> ‘Standby’ -> ‘Off’ when shutdown.
Base URLs:
Service information APIs for getting information on the HSM service such as readiness, etc.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/ready HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/ready \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/ready', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/ready", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/ready
Kubernetes readiness endpoint to monitor service health
The readiness
resource works in conjunction with the Kubernetes readiness probe to determine when the service is no longer healthy and able to respond correctly to requests. Too many failures of the readiness probe will result in the traffic being routed away from this service and eventually the service will be shut down and restarted if in an unready state for too long.
This is primarily an endpoint for the automated Kubernetes system.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK Network API call success | Response_1.0.0 |
503 | Service Unavailable | The service is unhealthy and not ready | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/liveness HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/liveness \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/liveness', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/liveness", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/liveness
Kubernetes liveness endpoint to monitor service health
The liveness
resource works in conjunction with the Kubernetes liveness probe to determine when the service is no longer responding to requests. Too many failures of the liveness probe will result in the service being shut down and restarted.
This is primarily an endpoint for the automated Kubernetes system.
Example responses
503 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content Network API call success | None |
503 | Service Unavailable | The service is not taking HTTP requests | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values
Retrieve all valid values for use as parameters
Retrieve all valid values for use as parameters.
Example responses
200 Response
null
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of parameters and their valid values. | Values.1.0.0_Values |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/arch HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/arch \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/arch', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/arch", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/arch
Retrieve all valid values for use with the ‘arch’ parameter
Retrieve all valid values for use with the ‘arch’ (component architecture) parameter.
Example responses
200 Response
{
"Arch": [
"X86"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ‘arch’ parameter. | Values.1.0.0_ArchArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/class HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/class \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/class', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/class", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/class
Retrieve all valid values for use with the ‘class’ parameter
Retrieve all valid values for use with the ‘class’ (hardware class) parameter.
Example responses
200 Response
{
"Class": [
"River"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ‘class’ parameter. | Values.1.0.0_ClassArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/flag HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/flag \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/flag', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/flag", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/flag
Retrieve all valid values for use with the ‘flag’ parameter
Retrieve all valid values for use with the ‘flag’ (component flag) parameter.
Example responses
200 Response
{
"Flag": [
"OK"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ‘flag’ parameter. | Values.1.0.0_FlagArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/nettype HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/nettype \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/nettype', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/nettype", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/nettype
Retrieve all valid values for use with the ’nettype’ parameter
Retrieve all valid values for use with the ’nettype’ (component network type) parameter.
Example responses
200 Response
{
"NetType": [
"Sling"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ’nettype’ parameter. | Values.1.0.0_NetTypeArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/role HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/role \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/role', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/role", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/role
Retrieve all valid values for use with the ‘role’ parameter
Retrieve all valid values for use with the ‘role’ (component role) parameter.
Example responses
200 Response
{
"Role": [
"Compute"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ‘role’ parameter. | Values.1.0.0_RoleArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/subrole HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/subrole \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/subrole', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/subrole", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/subrole
Retrieve all valid values for use with the ‘subrole’ parameter
Retrieve all valid values for use with the ‘subrole’ (component subrole) parameter.
Example responses
200 Response
{
"SubRole": [
"Worker"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ‘subrole’ parameter. | Values.1.0.0_SubRoleArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/state HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/state \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/state', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/state", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/state
Retrieve all valid values for use with the ‘state’ parameter
Retrieve all valid values for use with the ‘state’ (component state) parameter.
Example responses
200 Response
{
"State": [
"Ready"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ‘state’ parameter. | Values.1.0.0_StateArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/type HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/type \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/type', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/service/values/type", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/values/type
Retrieve all valid values for use with the ’type’ parameter
Retrieve all valid values for use with the ’type’ (component HMSType) parameter.
Example responses
200 Response
{
"Type": [
"Node"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of valid values for the ’type’ parameter. | Values.1.0.0_TypeArray |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
High-level component information by xname: state, flag, NID, role, etc.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /State/Components
Retrieve collection of HMS Components
Retrieve the full collection of state/components in the form of a ComponentArray. Full results can also be filtered by query parameters. When multiple parameters are specified, they are applied in an AND fashion (e.g. type AND state). When a parameter is specified multiple times, they are applied in an OR fashion (e.g. type AND state1 OR state2). If the collection is empty or the filters have no match, an empty array is returned.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | query | string | false | Filter the results based on xname ID(s). Can be specified multiple times for selecting entries with multiple specific xnames. |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
state | query | string | false | Filter the results based on HMS state like Ready, On etc. Can be specified multiple times for selecting entries in different states. |
flag | query | string | false | Filter the results based on HMS flag value like OK, Alert etc. Can be specified multiple times for selecting entries with different flags. |
role | query | string | false | Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are: |
subrole | query | string | false | Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are: |
enabled | query | string | false | Filter the results based on enabled status (true or false). |
softwarestatus | query | string | false | Filter the results based on software status. Software status is a free form string. Matching is case-insensitive. Can be specified multiple times for selecting entries with different software statuses. |
subtype | query | string | false | Filter the results based on HMS subtype. Can be specified multiple times for selecting entries with different subtypes. |
arch | query | string | false | Filter the results based on architecture. Can be specified multiple times for selecting components with different architectures. |
class | query | string | false | Filter the results based on HMS hardware class. Can be specified multiple times for selecting entries with different classes. |
nid | query | string | false | Filter the results based on NID. Can be specified multiple times for selecting entries with multiple specific NIDs. |
nid_start | query | string | false | Filter the results based on NIDs equal to or greater than the provided integer. |
nid_end | query | string | false | Filter the results based on NIDs less than or equal to the provided integer. |
partition | query | string | false | Restrict search to the given partition (p#.#). One partition can be combined with at most one group argument which will be treated as a logical AND. NULL will return components in NO partition. |
group | query | string | false | Restrict search to the given group label. One group can be combined with at most one partition argument which will be treated as a logical AND. NULL will return components in NO groups. |
stateonly | query | boolean | false | Return only component state and flag fields (plus xname/ID and type). Results can be modified and used for bulk state/flag- only patch operations. |
flagonly | query | boolean | false | Return only component flag field (plus xname/ID and type). Results can be modified and used for bulk flag-only patch operations. |
roleonly | query | boolean | false | Return only component role and subrole fields (plus xname/ID and type). Results can be modified and used for bulk role-only patches. |
nidonly | query | boolean | false | Return only component NID field (plus xname/ID and type). Results can be modified and used for bulk NID-only patches. |
role: Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are:
subrole: Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are:
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
state | Unknown |
state | Empty |
state | Populated |
state | Off |
state | On |
state | Standby |
state | Halt |
state | Ready |
flag | OK |
flag | Warning |
flag | Alert |
flag | Locked |
flag | Unknown |
arch | X86 |
arch | ARM |
arch | Other |
arch | UNKNOWN |
class | River |
class | Mountain |
class | Hill |
Example responses
200 Response
{
"Components": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ComponentArray representing results of query. | ComponentArray_ComponentArray |
400 | Bad Request | Bad Request such as invalid argument for filter | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /State/Components
Create/Update a collection of HMS Components
Create/Update a collection of state/components. If the component already exists it will not be overwritten unless force=true in which case State, Flag, Subtype, NetType, Arch, and Class will get overwritten.
Body parameter
{
"Components": [
{
"ID": "x0c0s1b0n0",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River"
}
],
"Force": true
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PostArray | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content One or more Component entries were successfully created/updated. | None |
400 | Bad Request | Bad Request such as invalid argument for a component field | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /State/Components
Delete all components
Delete all entries in the components collection.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /State/Components/{xname}
Retrieve component at {xname}
Retrieve state or components by xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to return. |
Example responses
200 Response
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Component entry matching xname/ID | Component.1.0.0_Component |
400 | Bad Request | Bad Request or invalid xname | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /State/Components/{xname}
Create/Update an HMS Component
Create/Update a state/component. If the component already exists it will not be overwritten unless force=true in which case State, Flag, Subtype, NetType, Arch, and Class will get overwritten.
Body parameter
{
"Component": {
"ID": "x0c0s1b0n0",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River"
},
"Force": true
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of the component to create or update. |
body | body | Component.1.0.0_Put | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content Component entry was successfully created/updated. | None |
400 | Bad Request | Bad Request such as invalid argument for a component field | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /State/Components/{xname}
Delete component with ID {xname}
Delete a component by xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Component is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/{nid} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/{nid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/{nid}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/{nid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /State/Components/ByNID/{nid}
Retrieve component with NID={nid}
Retrieve a component by NID.
Name | In | Type | Required | Description |
---|---|---|---|---|
nid | path | string | true | NID of component to return. |
Example responses
200 Response
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Component entry matching xname/ID | Component.1.0.0_Component |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkStateData HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkStateData \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkStateData', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkStateData", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/BulkStateData
Update multiple components’ state data via a list of xnames
Specify a list of xnames to update the State and Flag fields. If the Flag field is omitted, Flag is reverted to ‘OK’. Other fields are ignored. The list of IDs and the new State are required.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"State": "Ready",
"Flag": "OK",
"Force": false,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PatchArray.StateData | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/StateData HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/StateData \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/StateData', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/StateData", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/{xname}/StateData
Update component state data at {xname}
Update the component’s state and flag fields only. If Flag field is omitted, the Flag value is reverted to ‘OK’.
Body parameter
{
"State": "Ready",
"Flag": "OK",
"Force": false,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to set state/flag on. |
body | body | Component.1.0.0_Patch.StateData | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkFlagOnly HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkFlagOnly \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkFlagOnly', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkFlagOnly", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/BulkFlagOnly
Update multiple components’ Flag values via a list of xnames
Specify a list of xnames to update the Flag field and specify the value. The list of IDs and the new Flag are required.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Flag": "OK",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PatchArray.FlagOnly | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/FlagOnly HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/FlagOnly \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/FlagOnly', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/FlagOnly", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/{xname}/FlagOnly
Update component Flag value at {xname}
The State is not modified. Only the Flag is updated.
Body parameter
{
"Flag": "OK",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to modify flag on. |
body | body | Component.1.0.0_Patch.FlagOnly | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkEnabled HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkEnabled \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkEnabled', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkEnabled", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/BulkEnabled
Update multiple components’ Enabled values via a list of xnames
Update the Enabled field for a list of xnames. Specify a single value for Enabled and also the list of xnames. Note that Enabled is a boolean field and a value of false sets the component(s) to disabled.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Enabled": true,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PatchArray.Enabled | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Enabled HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Enabled \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Enabled', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Enabled", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/{xname}/Enabled
Update component Enabled value at {xname}
Update the component’s Enabled field only. The State and other fields are not modified. Note that this is a boolean field, a value of false sets the component to disabled.
Body parameter
{
"Enabled": true,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to set Enabled to true or false. |
body | body | Component.1.0.0_Patch.Enabled | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkSoftwareStatus HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkSoftwareStatus \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkSoftwareStatus', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkSoftwareStatus", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/BulkSoftwareStatus
Update multiple components’ SoftwareStatus values via a list of xnames
Update the SoftwareStatus field for a list of xnames. Specify a single new value of SoftwareStatus like admindown and the list of xnames.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"SoftwareStatus": "string",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PatchArray.SoftwareStatus | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/SoftwareStatus HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/SoftwareStatus \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/SoftwareStatus', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/SoftwareStatus", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/{xname}/SoftwareStatus
Update component SoftwareStatus value at {xname}
Update the component’s SoftwareStatus field only. The State and other fields are not modified.
Body parameter
{
"SoftwareStatus": "string",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to set new SoftwareStatus value. |
body | body | Component.1.0.0_Patch.SoftwareStatus | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkRole HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkRole \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkRole', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkRole", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/BulkRole
Update multiple components’ Role values via a list of xnames
Update the Role and SubRole field for a list of xnames. Specify the Role and Subrole values and the list of xnames. The list of IDs and the new Role are required.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Role": "Compute",
"SubRole": "Worker",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PatchArray.Role | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Role HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Role \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Role', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/Role", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/{xname}/Role
Update component Role and SubRole values at {xname}
Update the component’s Role and SubRole fields only. Valid only for nodes. The State and other fields are not modified.
Body parameter
{
"Role": "Compute",
"SubRole": "Worker",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to modify Role on. |
body | body | Component.1.0.0_Patch.Role | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkNID HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkNID \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkNID', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/BulkNID", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/BulkNID
Update multiple components’ NIDs via ComponentArray
Modify the submitted ComponentArray and update the corresponding NID value for each entry. Other fields are ignored and not changed. ID field is required for all entries.
Body parameter
{
"Components": [
{
"ID": "x0c0s0b0n0",
"NID": 0,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PatchArray.NID | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/NID HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/NID \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/NID', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/{xname}/NID", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /State/Components/{xname}/NID
Update component NID value at {xname}
Update the component’s NID field only. Valid only for nodes. State and other fields are not modified.
Body parameter
{
"NID": 0,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to modify NID on. |
body | body | Component.1.0.0_Patch.NID | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /State/Components/Query
Create component query (by xname list), returning ComponentArray
Retrieve the targeted entries in the form of a ComponentArray by providing a payload of component IDs.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"partition": "p1",
"group": "group_label",
"stateonly": true,
"flagonly": true,
"roleonly": true,
"nidonly": true,
"type": [
"string"
],
"state": [
"string"
],
"flag": [
"string"
],
"enabled": [
"string"
],
"softwarestatus": [
"string"
],
"role": [
"string"
],
"subrole": [
"string"
],
"subtype": [
"string"
],
"arch": [
"string"
],
"class": [
"string"
],
"nid": [
"string"
],
"nid_start": [
"string"
],
"nid_end": [
"string"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PostQuery | true | none |
Example responses
200 Response
{
"Components": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ComponentArray representing results of query. | ComponentArray_ComponentArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/Query HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/Query \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/Query', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/ByNID/Query", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /State/Components/ByNID/Query
Create component query (by NID ranges), returning ComponentArray
Retrieve the targeted entries in the form of a ComponentArray by providing a payload of NID ranges.
Body parameter
{
"NIDRanges": [
"0-24"
],
"partition": "p1.2",
"stateonly": true,
"flagonly": true,
"roleonly": true,
"nidonly": true
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ComponentArray_PostByNIDQuery | true | none |
Example responses
200 Response
{
"Components": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ComponentArray representing results of query. | ComponentArray_ComponentArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/State/Components/Query/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /State/Components/Query/{xname}
Retrieve component query for {xname}, returning ComponentArray
Retrieve component entries in the form of a ComponentArray by providing xname and modifiers in the query string.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of component to query. |
type | query | string | false | Retrieve xname’s children of type={type} instead of {xname} for example NodeBMC, NodeEnclosure etc. |
state | query | string | false | Filter the results based on HMS state like Ready, On etc. Can be specified multiple times for selecting entries in different states. |
flag | query | string | false | Filter the results based on HMS flag value like OK, Alert etc. Can be specified multiple times for selecting entries with different flags. |
role | query | string | false | Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are: |
subrole | query | string | false | Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are: |
enabled | query | string | false | Filter the results based on enabled status (true or false). |
softwarestatus | query | string | false | Filter the results based on software status. Software status is a free form string. Matching is case-insensitive. Can be specified multiple times for selecting entries with different software statuses. |
subtype | query | string | false | Filter the results based on HMS subtype. Can be specified multiple times for selecting entries with different subtypes. |
arch | query | string | false | Filter the results based on architecture. Can be specified multiple times for selecting components with different architectures. |
class | query | string | false | Filter the results based on HMS hardware class. Can be specified multiple times for selecting entries with different classes. |
nid | query | string | false | Filter the results based on NID. Can be specified multiple times for selecting entries with multiple specific NIDs. |
nid_start | query | string | false | Filter the results based on NIDs equal to or greater than the provided integer. |
nid_end | query | string | false | Filter the results based on NIDs less than or equal to the provided integer. |
partition | query | string | false | Restrict search to the given partition (p#.#). One partition can be combined with at most one group argument which will be treated as a logical AND. NULL will return components in NO partition. |
group | query | string | false | Restrict search to the given group label. One group can be combined with at most one partition argument which will be treated as a logical AND. NULL will return components in NO groups. |
stateonly | query | boolean | false | Return only component state and flag fields (plus xname/ID and type). Results can be modified and used for bulk state/flag- only patch operations. |
flagonly | query | boolean | false | Return only component flag field (plus xname/ID and type). Results can be modified and used for bulk flag-only patch operations. |
roleonly | query | boolean | false | Return only component role and subrole fields (plus xname/ID and type). Results can be modified and used for bulk role-only patches. |
nidonly | query | boolean | false | Return only component NID field (plus xname/ID and type). Results can be modified and used for bulk NID-only patches. |
role: Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are:
subrole: Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are:
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
state | Unknown |
state | Empty |
state | Populated |
state | Off |
state | On |
state | Standby |
state | Halt |
state | Ready |
flag | OK |
flag | Warning |
flag | Alert |
flag | Locked |
flag | Unknown |
arch | X86 |
arch | ARM |
arch | Other |
arch | UNKNOWN |
class | River |
class | Mountain |
class | Hill |
Example responses
200 Response
{
"Components": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ComponentArray representing results of query. | ComponentArray_ComponentArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Given a node xname ID, provide defaults for NID, Role, etc. to be used when the node is first discovered. These are uploaded prior to discovery and should contain mappings for each valid node xname in the system, whether populated or not.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Defaults/NodeMaps
Retrieve all NodeMaps, returning NodeMapArray
Retrieve all Node map entries as a named array, or an empty array if the collection is empty.
Example responses
200 Response
{
"NodeMaps": [
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Named NodeMaps array representing all xname locations that have defaults registered. | NodeMapArray_NodeMapArray |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Defaults/NodeMaps
Create or Modify NodeMaps
Create or update the given set of NodeMaps whose ID fields are each a valid xname. The NID field is required and serves as the NID that will be used when a component with the same xname ID is created for the first time by discovery. Role is an optional field. A node is assigned the default (e.g. Compute) role when it is first created during discovery. The NID must be unique across all entries. SubRole is an optional field. A node is assigned no subrole by default when it is first created during discovery.
The NodeMaps collection should be uploaded at install time by specifying it as a JSON file. As a result, when the endpoints are automatically discovered by REDS, and inventory discovery is performed by HSM, the desired NID numbers will be set as soon as the nodes are created using the NodeMaps collection. All node xnames that are expected to be used in the system should be included in the mapping, even if not currently populated.
It is recommended that NodeMaps are uploaded at install time before discovery happens. If they are uploaded after discovery, then the node xnames need to be manually updated with the correct NIDs. You can update NIDs for individual components by using PATCH /State/Components/{xname}/NID.
Note the following points:
Body parameter
{
"NodeMaps": [
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | NodeMapArray_NodeMapArray | true | none |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries created or updated. Message contains count of new/modified items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate resource (NID) would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Defaults/NodeMaps
Delete all NodeMap entities
Delete all entries in the NodeMaps collection.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Defaults/NodeMaps/{xname}
Retrieve NodeMap at {xname}
Retrieve NodeMap, i.e. defaults NID/Role/etc. for node located at physical location {xname}.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of NodeMap record to return. |
Example responses
200 Response
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | NodeMap entry matching xname/ID | NodeMap.1.0.0_NodeMap |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Defaults/NodeMaps/{xname}
Delete NodeMap with ID {xname}
Delete NodeMap entry for a specific node {xname}.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of NodeMap record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - NodeMap is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Defaults/NodeMaps/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /Defaults/NodeMaps/{xname}
Update definition for NodeMap ID {xname}
Update or create an entry for an individual node xname using PUT. Note the following points:
Body parameter
{
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of NodeMap record to create or update. |
body | body | NodeMap.1.0.0_NodeMap | true | none |
Example responses
200 Response
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | NodeMap entry was successfully created/updated. | NodeMap.1.0.0_PostNodeMap |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate resource (NID) would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
HWInventoryByLocation collection containing all components matching the query that was submitted.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/Query/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/Query/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/Query/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/Query/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/Hardware/Query/{xname}
Retrieve results of HWInventory query starting at {xname}
Retrieve zero or more HWInventoryByLocation entries in the form of a HWInventory by providing xname and modifiers in query string. The FRU (field-replaceable unit) data will be included in each HWInventoryByLocation entry if the location is populated.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of parent component, system (e.g. s0, all) or partition (p#.#) to target for hardware inventory |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
children | query | boolean | false | Also return children of the selected components. Default is true. |
parents | query | boolean | false | Also return parents of the selected components. |
partition | query | string | false | Restrict search to the given partition (p#.#). Child components are assumed to be in the same partition as the parent component when performing this kind of query. |
format | query | string | false | How to display results |
format: How to display results
FullyFlat All component types listed in their own arrays only. No nesting of any children. NestNodesOnly Flat except that node subcomponents are nested hierarchically. Default is NestNodesOnly.
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
Example responses
200 Response
{
"XName": "x0c0s0b0n0",
"Format": "NestNodesOnly",
"Cabinets": [
{
"ID": "x0",
"Type": "Cabinet",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocCabinet",
"CabinetLocationInfo": {
"Id": "Cabinet",
"Name": "Name describing cabinet or where it is located, per manufacturing",
"Description": "Description of cabinet, per manufacturing",
"Hostname": "if_defined_in_Redfish"
},
"PopulatedFRU": {
"FRUID": "Cray-2345-1234556789",
"Type": "Cabinet",
"Subtype": "MountainCabinet (example)",
"HWInventoryByFRUType": "HWInvByFRUCabinet",
"CabinetFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"Model": 123,
"Manufacturer": "Cray",
"PartNumber": "p2345",
"SerialNumber": "sn1234556789",
"SKU": "as213234",
"ChassisType": "Rack"
}
}
}
],
"Chassis": [
{
"ID": "x0c0",
"Type": "Chassis",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocChassis",
"ChassisLocationInfo": {
"Id": "Chassis.1",
"Name": "Name describing component or its location, per manufacturing",
"Description": "Description, per manufacturing",
"Hostname": "if_defined_in_Redfish"
},
"PopulatedFRU": {
"FRUID": "Cray-ch01-23452345",
"Type": "Chassis",
"Subtype": "MountainChassis (example)",
"HWInventoryByFRUType": "HWInvByFRUChassis",
"ChassisFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"Model": 3245,
"Manufacturer": "Cray",
"PartNumber": "ch01",
"SerialNumber": "sn23452345",
"SKU": "as213234",
"ChassisType": "Enclosure"
}
}
}
],
"ComputeModules": [
{
"ComputeModuleLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
},
"NodeEnclosures": [
{
"NodeEnclosureLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
]
}
],
"RouterModules": [
{
"RouterModuleLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
},
"HSNBoards": [
{
"HSNBoardLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
]
}
],
"NodeEnclosures": [
{
"NodeEnclosureLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"HSNBoards": [
{
"HSNBoardLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"MgmtSwitches": [
{
"MgmtSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"MgmtHLSwitches": [
{
"MgmtHLSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"CDUMgmtSwitches": [
{
"CDUMgmtSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"Nodes": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocNode",
"NodeLocationInfo": {
"Id": "System.Embedded.1",
"Name": "Name describing system or where it is located, per manufacturing",
"Description": "Description of system/node type, per manufacturing",
"Hostname": "if_defined_in_Redfish",
"ProcessorSummary": {
"Count": 2,
"Model": "Multi-Core Intel(R) Xeon(R) processor E5-16xx Series"
},
"MemorySummary": {
"TotalSystemMemoryGiB": 64
}
},
"PopulatedFRU": {
"FRUID": "Dell-99999-1234.1234.2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "p99999",
"SerialNumber": "1234.1234.2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
},
"Processors": [
{
"ID": "x0c0s0b0n0p0",
"Type": "Processor",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU1",
"Name": "Processor",
"Description": "Socket 1 Processor",
"Socket": "CPU 1"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
},
{
"ID": "x0c0s0b0n0p1",
"Type": "Processor",
"Ordinal": 1,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU2",
"Name": "Processor",
"Description": "Socket 2 Processor",
"Socket": "CPU 2"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
}
],
"Memory": [
{
"ID": "x0c0s0b0n0d0",
"Type": "Memory",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM1",
"Name": "DIMM Slot 1",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "sn12344567689"
}
}
},
{
"ID": "x0c0s0b0n0d1",
"Type": "Memory",
"Ordinal": 1,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM2",
"Name": "Socket 1 DIMM Slot 2",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
},
{
"ID": "x0c0s0b0n0d2",
"Type": "Memory",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 1",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER_2",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "k346456346346"
}
}
},
{
"ID": "x0c0s0b0n0d3",
"Type": "Memory",
"Ordinal": 3,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 2",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
}
]
}
],
"Processors": [
{
"description": "By default, listed as subcomponent of Node, see example there."
}
],
"NodeAccels": [
{
"description": "By default, listed as subcomponent of Node."
}
],
"Drives": [
{
"description": "By default, listed as subcomponent of Node, see example there."
}
],
"Memory": [
{
"description": "By default, listed as subcomponent of Node, see example there."
}
],
"CabinetPDUs": [
{
"ID": "x0m0p0",
"Type": "CabinetPDU",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocPDU",
"PDULocationInfo": {
"Id": "1",
"Name": "RackPDU1",
"Description": "Description of PDU, per manufacturing",
"UUID": "32354641-4135-4332-4a35-313735303734"
},
"PopulatedFRU": {
"FRUID": "CabinetPDU.29347ZT536",
"Type": "CabinetPDU",
"HWInventoryByFRUType": "HWInvByFRUPDU",
"PDUFRUInfo": {
"FirmwareVersion": "4.3.0",
"EquipmentType": "RackPDU",
"Manufacturer": "Contoso",
"CircuitSummary": {
"TotalPhases": 3,
"TotalBranches": 4,
"TotalOutlets": 16,
"MonitoredPhases": 3,
"ControlledOutlets": 8,
"MonitoredBranches": 4,
"MonitoredOutlets": 12
},
"AssetTag": "PDX-92381",
"DateOfManufacture": "2017-01-11T08:00:00Z",
"HardwareRevision": "1.03b",
"Model": "ZAP4000",
"SerialNumber": "29347ZT536",
"PartNumber": "AA-23"
}
},
"CabinetPDUPowerConnectors": [
{
"ID": "x0m0p0v1",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A1",
"Name": "Outlet A1, Branch Circuit A",
"Description": "Outlet description"
},
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.0.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
},
{
"ID": "x0m0p0v2",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A2",
"Name": "Outlet A2, Branch Circuit A",
"Description": "Outlet description"
},
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.1.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
}
]
}
],
"CabinetPDUPowerConnectors": [
{
"description": "By default, listed as subcomponent of PDU, see example there."
}
],
"CMMRectifiers": [
{
"CMMRectifierLocationInfo": {
"Name": "string",
"FirmwareVersion": "string"
}
}
],
"NodeAccelRisers": [
{
"NodeAccelRiserLocationInfo": {
"Name": "string",
"Description": "string"
}
}
],
"NodeHsnNICs": [
{
"HSNNICLocationInfo": {
"Description": "string",
"Id": "string",
"Name": "string"
}
}
],
"NodeEnclosurePowerSupplies": [
{
"NodeEnclosurePowerSupplyLocationInfo": {
"Name": "string",
"FirmwareVersion": "string"
}
}
],
"NodeBMC": [
{
"NodeBMCLocationInfo": {
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
}
],
"RouterBMC": [
{
"RouterBMCLocationInfo": {
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ComponentArray representing results of query. | HWInventory.1.0.0_HWInventory |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Hardware inventory information for the given system location/xname
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/Hardware
Retrieve all HWInventoryByLocation entries in array
Retrieve all HWInventoryByLocation entries. Note that all entries are displayed as a flat array. For most purposes, you will want to use /Inventory/Hardware/Query.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | query | string | false | Filter the results based on xname ID(s). Can be specified multiple times for selecting entries with multiple specific xnames. |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
manufacturer | query | string | false | Retrieve HWInventoryByLocation entries with the given Manufacturer. |
partnumber | query | string | false | Retrieve HWInventoryByLocation entries with the given part number. |
serialnumber | query | string | false | Retrieve HWInventoryByLocation entries with the given serial number. |
fruid | query | string | false | Retrieve HWInventoryByLocation entries with the given FRU ID. |
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
Example responses
200 Response
[
null
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Flat, unsorted HWInventoryByLocation array. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [HWInventory.1.0.0_HWInventoryByLocation] | false | none | [This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it.] |
» ID | XNameCompOrPartition.1.0.0 | true | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input, or else a parent component. |
» Type | HMSType.1.0.0 | false | read-only | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
» Ordinal | integer(int32) | false | read-only | This is the normalized (from zero) index of the component location (e.g. slot number) when there are more than one. This should match the last number in the xname in most cases (e.g. Ordinal 0 for node x0c0s0b0n0). Note that Redfish may use a different value or naming scheme, but this is passed through via the *LocationInfo for the type of component. |
» Status | string | false | read-only | Populated or Empty - whether location is populated. |
» HWInventoryByLocationType | string | true | none | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
» PopulatedFRU | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
»» FRUID | FRUId.1.0.0 | false | read-only | Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory, |
»» Type | HMSType.1.0.0 | false | read-only | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
»» FRUSubtype | string | false | none | TBD. |
»» HWInventoryByFRUType | string | true | none | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
Property | Value |
---|---|
Type | CDU |
Type | CabinetCDU |
Type | CabinetPDU |
Type | CabinetPDUOutlet |
Type | CabinetPDUPowerConnector |
Type | CabinetPDUController |
Type | Cabinet |
Type | Chassis |
Type | ChassisBMC |
Type | CMMRectifier |
Type | CMMFpga |
Type | CEC |
Type | ComputeModule |
Type | RouterModule |
Type | NodeBMC |
Type | NodeEnclosure |
Type | NodeEnclosurePowerSupply |
Type | HSNBoard |
Type | MgmtSwitch |
Type | MgmtHLSwitch |
Type | CDUMgmtSwitch |
Type | Node |
Type | Processor |
Type | Drive |
Type | StorageGroup |
Type | NodeNIC |
Type | Memory |
Type | NodeAccel |
Type | NodeAccelRiser |
Type | NodeFpga |
Type | HSNAsic |
Type | RouterFpga |
Type | RouterBMC |
Type | HSNLink |
Type | HSNConnector |
Type | INVALID |
Status | Populated |
Status | Empty |
HWInventoryByLocationType | HWInvByLocCabinet |
HWInventoryByLocationType | HWInvByLocChassis |
HWInventoryByLocationType | HWInvByLocComputeModule |
HWInventoryByLocationType | HWInvByLocRouterModule |
HWInventoryByLocationType | HWInvByLocNodeEnclosure |
HWInventoryByLocationType | HWInvByLocHSNBoard |
HWInventoryByLocationType | HWInvByLocMgmtSwitch |
HWInventoryByLocationType | HWInvByLocMgmtHLSwitch |
HWInventoryByLocationType | HWInvByLocCDUMgmtSwitch |
HWInventoryByLocationType | HWInvByLocNode |
HWInventoryByLocationType | HWInvByLocProcessor |
HWInventoryByLocationType | HWInvByLocNodeAccel |
HWInventoryByLocationType | HWInvByLocNodeAccelRiser |
HWInventoryByLocationType | HWInvByLocDrive |
HWInventoryByLocationType | HWInvByLocMemory |
HWInventoryByLocationType | HWInvByLocPDU |
HWInventoryByLocationType | HWInvByLocOutlet |
HWInventoryByLocationType | HWInvByLocCMMRectifier |
HWInventoryByLocationType | HWInvByLocNodeEnclosurePowerSupply |
HWInventoryByLocationType | HWInvByLocNodeBMC |
HWInventoryByLocationType | HWInvByLocRouterBMC |
HWInventoryByLocationType | HWInvByLocHSNNIC |
Type | CDU |
Type | CabinetCDU |
Type | CabinetPDU |
Type | CabinetPDUOutlet |
Type | CabinetPDUPowerConnector |
Type | CabinetPDUController |
Type | Cabinet |
Type | Chassis |
Type | ChassisBMC |
Type | CMMRectifier |
Type | CMMFpga |
Type | CEC |
Type | ComputeModule |
Type | RouterModule |
Type | NodeBMC |
Type | NodeEnclosure |
Type | NodeEnclosurePowerSupply |
Type | HSNBoard |
Type | MgmtSwitch |
Type | MgmtHLSwitch |
Type | CDUMgmtSwitch |
Type | Node |
Type | Processor |
Type | Drive |
Type | StorageGroup |
Type | NodeNIC |
Type | Memory |
Type | NodeAccel |
Type | NodeAccelRiser |
Type | NodeFpga |
Type | HSNAsic |
Type | RouterFpga |
Type | RouterBMC |
Type | HSNLink |
Type | HSNConnector |
Type | INVALID |
HWInventoryByFRUType | HWInvByFRUCabinet |
HWInventoryByFRUType | HWInvByFRUChassis |
HWInventoryByFRUType | HWInvByFRUComputeModule |
HWInventoryByFRUType | HWInvByFRURouterModule |
HWInventoryByFRUType | HWInvByFRUNodeEnclosure |
HWInventoryByFRUType | HWInvByFRUHSNBoard |
HWInventoryByFRUType | HWInvByFRUMgmtSwitch |
HWInventoryByFRUType | HWInvByFRUMgmtHLSwitch |
HWInventoryByFRUType | HWInvByFRUCDUMgmtSwitch |
HWInventoryByFRUType | HWInvByFRUNode |
HWInventoryByFRUType | HWInvByFRUProcessor |
HWInventoryByFRUType | HWInvByFRUNodeAccel |
HWInventoryByFRUType | HWInvByFRUNodeAccelRiser |
HWInventoryByFRUType | HWInvByFRUDrive |
HWInventoryByFRUType | HWInvByFRUMemory |
HWInventoryByFRUType | HWInvByFRUPDU |
HWInventoryByFRUType | HWInvByFRUOutlet |
HWInventoryByFRUType | HWInvByFRUCMMRectifier |
HWInventoryByFRUType | HWInvByFRUNodeEnclosurePowerSupply |
HWInventoryByFRUType | HWInvByFRUNodeBMC |
HWInventoryByFRUType | HWInvByFRURouterBMC |
HWInventoryByFRUType | HWIncByFRUHSNNIC |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Inventory/Hardware
Create/Update hardware inventory entries
Create/Update hardware inventory entries
Body parameter
{
"Hardware": [
{
"ID": "x3000c0s23b4n4h0",
"HWInventoryByLocationType": "HWInvByLocHSNNIC",
"HSNNICLocationInfo": {
"Id": "HPCNet3",
"Description": "Shasta Timms NMC REV04 (HSN)"
},
"PopulatedFRU": {
"HWInventoryByFRUType": "HWInvByFRUHSNNIC",
"HSNNICFRUInfo": {
"Model": "ConnectX-5 100Gb/s",
"SerialNumber": "HG20190738",
"PartNumber": "102005303",
"Manufacturer": "Mellanox Technologies, Ltd."
}
}
}
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | object | true | none |
» Hardware | body | [HWInventory.1.0.0_HWInventoryByLocation] | false | [This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it.] |
»» ID | body | XNameCompOrPartition.1.0.0 | true | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input, or else a parent component. |
»» Type | body | HMSType.1.0.0 | false | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
»» Ordinal | body | integer(int32) | false | This is the normalized (from zero) index of the component location (e.g. slot number) when there are more than one. This should match the last number in the xname in most cases (e.g. Ordinal 0 for node x0c0s0b0n0). Note that Redfish may use a different value or naming scheme, but this is passed through via the *LocationInfo for the type of component. |
»» Status | body | string | false | Populated or Empty - whether location is populated. |
»» HWInventoryByLocationType | body | string | true | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
»» PopulatedFRU | body | HWInventory.1.0.0_HWInventoryByFRU | false | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
»»» FRUID | body | FRUId.1.0.0 | false | Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory, |
»»» Type | body | HMSType.1.0.0 | false | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
»»» FRUSubtype | body | string | false | TBD. |
»»» HWInventoryByFRUType | body | string | true | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
Parameter | Value |
---|---|
»» Type | CDU |
»» Type | CabinetCDU |
»» Type | CabinetPDU |
»» Type | CabinetPDUOutlet |
»» Type | CabinetPDUPowerConnector |
»» Type | CabinetPDUController |
»» Type | Cabinet |
»» Type | Chassis |
»» Type | ChassisBMC |
»» Type | CMMRectifier |
»» Type | CMMFpga |
»» Type | CEC |
»» Type | ComputeModule |
»» Type | RouterModule |
»» Type | NodeBMC |
»» Type | NodeEnclosure |
»» Type | NodeEnclosurePowerSupply |
»» Type | HSNBoard |
»» Type | MgmtSwitch |
»» Type | MgmtHLSwitch |
»» Type | CDUMgmtSwitch |
»» Type | Node |
»» Type | Processor |
»» Type | Drive |
»» Type | StorageGroup |
»» Type | NodeNIC |
»» Type | Memory |
»» Type | NodeAccel |
»» Type | NodeAccelRiser |
»» Type | NodeFpga |
»» Type | HSNAsic |
»» Type | RouterFpga |
»» Type | RouterBMC |
»» Type | HSNLink |
»» Type | HSNConnector |
»» Type | INVALID |
»» Status | Populated |
»» Status | Empty |
»» HWInventoryByLocationType | HWInvByLocCabinet |
»» HWInventoryByLocationType | HWInvByLocChassis |
»» HWInventoryByLocationType | HWInvByLocComputeModule |
»» HWInventoryByLocationType | HWInvByLocRouterModule |
»» HWInventoryByLocationType | HWInvByLocNodeEnclosure |
»» HWInventoryByLocationType | HWInvByLocHSNBoard |
»» HWInventoryByLocationType | HWInvByLocMgmtSwitch |
»» HWInventoryByLocationType | HWInvByLocMgmtHLSwitch |
»» HWInventoryByLocationType | HWInvByLocCDUMgmtSwitch |
»» HWInventoryByLocationType | HWInvByLocNode |
»» HWInventoryByLocationType | HWInvByLocProcessor |
»» HWInventoryByLocationType | HWInvByLocNodeAccel |
»» HWInventoryByLocationType | HWInvByLocNodeAccelRiser |
»» HWInventoryByLocationType | HWInvByLocDrive |
»» HWInventoryByLocationType | HWInvByLocMemory |
»» HWInventoryByLocationType | HWInvByLocPDU |
»» HWInventoryByLocationType | HWInvByLocOutlet |
»» HWInventoryByLocationType | HWInvByLocCMMRectifier |
»» HWInventoryByLocationType | HWInvByLocNodeEnclosurePowerSupply |
»» HWInventoryByLocationType | HWInvByLocNodeBMC |
»» HWInventoryByLocationType | HWInvByLocRouterBMC |
»» HWInventoryByLocationType | HWInvByLocHSNNIC |
»»» Type | CDU |
»»» Type | CabinetCDU |
»»» Type | CabinetPDU |
»»» Type | CabinetPDUOutlet |
»»» Type | CabinetPDUPowerConnector |
»»» Type | CabinetPDUController |
»»» Type | Cabinet |
»»» Type | Chassis |
»»» Type | ChassisBMC |
»»» Type | CMMRectifier |
»»» Type | CMMFpga |
»»» Type | CEC |
»»» Type | ComputeModule |
»»» Type | RouterModule |
»»» Type | NodeBMC |
»»» Type | NodeEnclosure |
»»» Type | NodeEnclosurePowerSupply |
»»» Type | HSNBoard |
»»» Type | MgmtSwitch |
»»» Type | MgmtHLSwitch |
»»» Type | CDUMgmtSwitch |
»»» Type | Node |
»»» Type | Processor |
»»» Type | Drive |
»»» Type | StorageGroup |
»»» Type | NodeNIC |
»»» Type | Memory |
»»» Type | NodeAccel |
»»» Type | NodeAccelRiser |
»»» Type | NodeFpga |
»»» Type | HSNAsic |
»»» Type | RouterFpga |
»»» Type | RouterBMC |
»»» Type | HSNLink |
»»» Type | HSNConnector |
»»» Type | INVALID |
»»» HWInventoryByFRUType | HWInvByFRUCabinet |
»»» HWInventoryByFRUType | HWInvByFRUChassis |
»»» HWInventoryByFRUType | HWInvByFRUComputeModule |
»»» HWInventoryByFRUType | HWInvByFRURouterModule |
»»» HWInventoryByFRUType | HWInvByFRUNodeEnclosure |
»»» HWInventoryByFRUType | HWInvByFRUHSNBoard |
»»» HWInventoryByFRUType | HWInvByFRUMgmtSwitch |
»»» HWInventoryByFRUType | HWInvByFRUMgmtHLSwitch |
»»» HWInventoryByFRUType | HWInvByFRUCDUMgmtSwitch |
»»» HWInventoryByFRUType | HWInvByFRUNode |
»»» HWInventoryByFRUType | HWInvByFRUProcessor |
»»» HWInventoryByFRUType | HWInvByFRUNodeAccel |
»»» HWInventoryByFRUType | HWInvByFRUNodeAccelRiser |
»»» HWInventoryByFRUType | HWInvByFRUDrive |
»»» HWInventoryByFRUType | HWInvByFRUMemory |
»»» HWInventoryByFRUType | HWInvByFRUPDU |
»»» HWInventoryByFRUType | HWInvByFRUOutlet |
»»» HWInventoryByFRUType | HWInvByFRUCMMRectifier |
»»» HWInventoryByFRUType | HWInvByFRUNodeEnclosurePowerSupply |
»»» HWInventoryByFRUType | HWInvByFRUNodeBMC |
»»» HWInventoryByFRUType | HWInvByFRURouterBMC |
»»» HWInventoryByFRUType | HWIncByFRUHSNNIC |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries created or updated. Message contains count of new/modified items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/Hardware
Delete all HWInventoryByLocation entries
Delete all entries in the HWInventoryByLocation collection. Note that this does not delete any associated HWInventoryByFRU entries.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) response code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/Hardware/{xname}
Retrieve HWInventoryByLocation entry at {xname}
Retrieve HWInventoryByLocation entries for a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of hardware inventory record to return. |
Example responses
HWInventoryByLocation entry matching xname/ID
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocNode",
"NodeLocationInfo": {
"Id": "System.Embedded.1",
"Name": "Name describing system or where it is located, per manufacturing",
"Description": "Description of system/node type, per manufacturing",
"Hostname": "if_defined_in_Redfish",
"ProcessorSummary": {
"Count": 2,
"Model": "Multi-Core Intel(R) Xeon(R) processor E5-16xx Series"
},
"MemorySummary": {
"TotalSystemMemoryGiB": 64
}
},
"PopulatedFRU": {
"FRUID": "Dell-99999-1234.1234.2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "p99999",
"SerialNumber": "1234.1234.2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
},
"Processors": [
{
"ID": "x0c0s0b0n0p0",
"Type": "Processor",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU1",
"Name": "Processor",
"Description": "Socket 1 Processor",
"Socket": "CPU 1"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
},
{
"ID": "x0c0s0b0n0p1",
"Type": "Processor",
"Ordinal": 1,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU2",
"Name": "Processor",
"Description": "Socket 2 Processor",
"Socket": "CPU 2"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
}
],
"Memory": [
{
"ID": "x0c0s0b0n0d0",
"Type": "Memory",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM1",
"Name": "DIMM Slot 1",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "12344567689j"
}
}
},
{
"ID": "x0c0s0b0n0d1",
"Type": "Memory",
"Ordinal": 1,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM2",
"Name": "Socket 1 DIMM Slot 2",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
},
{
"ID": "x0c0s0b0n0d2",
"Type": "Memory",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 1",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER_2",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "346456346346j"
}
}
},
{
"ID": "x0c0s0b0n0d3",
"Type": "Memory",
"Ordinal": 3,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 2",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
}
]
}
200 Response
null
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | HWInventoryByLocation entry matching xname/ID | HWInventory.1.0.0_HWInventoryByLocation |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/Hardware/{xname}
DELETE HWInventoryByLocation entry with ID (location) {xname}
Delete HWInventoryByLocation entry for a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of HWInventoryByLocation record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) code - entry is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
This represents a physical piece of hardware with properties specific to a unique component in the system. This information is constant regardless of where the hardware item is currently in the system (if it is in the system). If a HWInventoryByLocation entry is currently populated with a piece of hardware, it will have the corresponding HWInventoryByFRU object embedded. This FRU info can also be looked up by FRU ID regardless of the current location.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/HardwareByFRU
Retrieve all HWInventoryByFRU entries in a flat array
Retrieve all HWInventoryByFRU entries. Note that there is no organization of the data, the entries are presented as a flat array. For most purposes, you will want to use /Inventory/Hardware/Query unless you are interested in components that are not currently installed anywhere.
Name | In | Type | Required | Description |
---|---|---|---|---|
fruid | query | string | false | Retrieve HWInventoryByFRU entries with the given FRU ID. |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
manufacturer | query | string | false | Retrieve HWInventoryByFRU entries with the given Manufacturer. |
partnumber | query | string | false | Retrieve HWInventoryByFRU entries with the given part number. |
serialnumber | query | string | false | Retrieve HWInventoryByFRU entries with the given serial number. |
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
Example responses
200 Response
[
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Flat, unsorted HWInventoryByFRU array. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [HWInventory.1.0.0_HWInventoryByFRU] | false | none | [This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all).] |
» FRUID | FRUId.1.0.0 | false | read-only | Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory, |
» Type | HMSType.1.0.0 | false | read-only | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
» FRUSubtype | string | false | none | TBD. |
» HWInventoryByFRUType | string | true | none | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
Property | Value |
---|---|
Type | CDU |
Type | CabinetCDU |
Type | CabinetPDU |
Type | CabinetPDUOutlet |
Type | CabinetPDUPowerConnector |
Type | CabinetPDUController |
Type | Cabinet |
Type | Chassis |
Type | ChassisBMC |
Type | CMMRectifier |
Type | CMMFpga |
Type | CEC |
Type | ComputeModule |
Type | RouterModule |
Type | NodeBMC |
Type | NodeEnclosure |
Type | NodeEnclosurePowerSupply |
Type | HSNBoard |
Type | MgmtSwitch |
Type | MgmtHLSwitch |
Type | CDUMgmtSwitch |
Type | Node |
Type | Processor |
Type | Drive |
Type | StorageGroup |
Type | NodeNIC |
Type | Memory |
Type | NodeAccel |
Type | NodeAccelRiser |
Type | NodeFpga |
Type | HSNAsic |
Type | RouterFpga |
Type | RouterBMC |
Type | HSNLink |
Type | HSNConnector |
Type | INVALID |
HWInventoryByFRUType | HWInvByFRUCabinet |
HWInventoryByFRUType | HWInvByFRUChassis |
HWInventoryByFRUType | HWInvByFRUComputeModule |
HWInventoryByFRUType | HWInvByFRURouterModule |
HWInventoryByFRUType | HWInvByFRUNodeEnclosure |
HWInventoryByFRUType | HWInvByFRUHSNBoard |
HWInventoryByFRUType | HWInvByFRUMgmtSwitch |
HWInventoryByFRUType | HWInvByFRUMgmtHLSwitch |
HWInventoryByFRUType | HWInvByFRUCDUMgmtSwitch |
HWInventoryByFRUType | HWInvByFRUNode |
HWInventoryByFRUType | HWInvByFRUProcessor |
HWInventoryByFRUType | HWInvByFRUNodeAccel |
HWInventoryByFRUType | HWInvByFRUNodeAccelRiser |
HWInventoryByFRUType | HWInvByFRUDrive |
HWInventoryByFRUType | HWInvByFRUMemory |
HWInventoryByFRUType | HWInvByFRUPDU |
HWInventoryByFRUType | HWInvByFRUOutlet |
HWInventoryByFRUType | HWInvByFRUCMMRectifier |
HWInventoryByFRUType | HWInvByFRUNodeEnclosurePowerSupply |
HWInventoryByFRUType | HWInvByFRUNodeBMC |
HWInventoryByFRUType | HWInvByFRURouterBMC |
HWInventoryByFRUType | HWIncByFRUHSNNIC |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/HardwareByFRU
Delete all HWInventoryByFRU entries
Delete all entries in the HWInventoryByFRU collection. Note that this does not delete any associated HWInventoryByLocation entries. Also, if any items are associated with a HWInventoryByLocation, the deletion will fail.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) response code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/HardwareByFRU/{fruid}
Retrieve HWInventoryByFRU for {fruid}
Retrieve HWInventoryByFRU for a specific fruID.
Name | In | Type | Required | Description |
---|---|---|---|---|
fruid | path | string | true | Global HMS field-replaceable (FRU) identifier (serial number, etc.) of the hardware component to select. |
Example responses
200 Response
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | HWInventoryByFRU entry matching fruid | HWInventory.1.0.0_HWInventoryByFRU |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/{fruid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/HardwareByFRU/{fruid}
Delete HWInventoryByFRU entry with FRU identifier {fruid}
Delete an entry in the HWInventoryByFRU collection. Note that this does not delete the associated HWInventoryByLocation entry if the FRU is currently residing in the system. In fact, if the FRU ID is associated with a HWInventoryByLocation currently, the deletion will fail.
Name | In | Type | Required | Description |
---|---|---|---|---|
fruid | path | string | true | Locational xname of HWInventoryByFRU record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) code - entry is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | FRU ID does Not Exist - no matching entry to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Hardware inventory historical information for the given system location/xname/FRU
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/Hardware/History
Retrieve the history entries for all HWInventoryByLocation entries
Retrieve the history entries for all HWInventoryByLocation entries.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | query | string | false | Filter the results based on xname ID(s). Can be specified multiple times for selecting entries with multiple specific xnames. |
eventtype | query | string | false | Retrieve the history entries of a specific type (Added, Removed, etc) for HWInventoryByLocation entries. |
starttime | query | string | false | Retrieve the history entries from after the requested history window start time for HWInventoryByLocation entries. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
endtime | query | string | false | Retrieve the history entries from before the requested history window end time for HWInventoryByLocation entries. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
Example responses
200 Response
{
"Components": [
{
"ID": "string",
"History": [
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
]
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of history entries sorted by xname. | HWInventory.1.0.0_HWInventoryHistoryCollection |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/Hardware/History
Clear the HWInventory history.
Delete all HWInventory history entries. Note that this also deletes history for any associated HWInventoryByFRU entries.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) response code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/Hardware/History/{xname}
Retrieve the history entries for the HWInventoryByLocation entry at {xname}
Retrieve the history entries for a HWInventoryByLocation entry with a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of hardware inventory record to return history for. |
eventtype | query | string | false | Retrieve the history entries of a specific type (Added, Removed, etc) for a HWInventoryByLocation entry. |
starttime | query | string | false | Retrieve the history entries from after the requested history window start time for a HWInventoryByLocation entry. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
endtime | query | string | false | Retrieve the history entries from before the requested history window end time for a HWInventoryByLocation entry. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
Example responses
200 Response
{
"ID": "string",
"History": [
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | History entries for the HWInventoryByLocation entry matching xname/ID | HWInventory.1.0.0_HWInventoryHistoryArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Hardware/History/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/Hardware/History/{xname}
DELETE history for the HWInventoryByLocation entry with ID (location) {xname}
Delete history for the HWInventoryByLocation entry for a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of HWInventoryByLocation record to delete history for. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) code - entry is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/HardwareByFRU/History
Retrieve the history entries for all HWInventoryByFRU entries.
Retrieve the history entries for all HWInventoryByFRU entries. Sorted by FRU.
Name | In | Type | Required | Description |
---|---|---|---|---|
fruid | query | string | false | Retrieve the history entries for HWInventoryByFRU entries with the given FRU ID. |
eventtype | query | string | false | Retrieve the history entries of a specific type (Added, Removed, etc) for HWInventoryByFRU entries. |
starttime | query | string | false | Retrieve the history entries from after the requested history window start time for HWInventoryByFRU entries. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
endtime | query | string | false | Retrieve the history entries from before the requested history window end time for HWInventoryByFRU entries. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
Example responses
200 Response
{
"Components": [
{
"ID": "string",
"History": [
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
]
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array of history entries sorted by FRU. | HWInventory.1.0.0_HWInventoryHistoryCollection |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/HardwareByFRU/History/{fruid}
Retrieve the history entries for the HWInventoryByFRU for {fruid}
Retrieve the history entries for the HWInventoryByFRU for a specific fruID.
Name | In | Type | Required | Description |
---|---|---|---|---|
fruid | path | string | true | Global HMS field-replaceable (FRU) identifier (serial number, etc.) of the hardware component to select. |
eventtype | query | string | false | Retrieve the history entries of a specific type (Added, Removed, etc) for a HWInventoryByFRU entry. |
starttime | query | string | false | Retrieve the history entries from after the requested history window start time for a HWInventoryByFRU entry. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
endtime | query | string | false | Retrieve the history entries from before the requested history window end time for a HWInventoryByFRU entry. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
Example responses
200 Response
{
"ID": "string",
"History": [
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | History entries for the HWInventoryByFRU entry matching fruid | HWInventory.1.0.0_HWInventoryHistoryArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/HardwareByFRU/History/{fruid}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/HardwareByFRU/History/{fruid}
Delete history for the HWInventoryByFRU entry with FRU identifier {fruid}
Delete history for an entry in the HWInventoryByFRU collection.
Name | In | Type | Required | Description |
---|---|---|---|---|
fruid | path | string | true | Locational xname of HWInventoryByFRU record to delete history for. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) code - entry is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | FRU ID does Not Exist - no matching entry to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
This is a BMC or other Redfish controller that has a Redfish entry point and Redfish service root. It is used to discover the components managed by this endpoint during discovery and handles all Redfish interactions by these subcomponents. If the endpoint has been discovered, this entry will include the ComponentEndpoint entries for these managed subcomponents.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/RedfishEndpoints
Retrieve all RedfishEndpoints, returning RedfishEndpointArray
Retrieve all Redfish endpoint entries as a named array, optionally filtering it.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | query | string | false | Filter the results based on xname ID(s). Can be specified multiple times for selecting entries with multiple specific xnames. |
fqdn | query | string | false | Retrieve RedfishEndpoint with the given FQDN |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
uuid | query | string | false | Retrieve the RedfishEndpoint with the given UUID. |
macaddr | query | string | false | Retrieve the RedfishEndpoint with the given MAC address. |
ipaddress | query | string | false | Retrieve the RedfishEndpoint with the given IP address. A blank string will get Redfish endpoints without IP addresses. |
laststatus | query | string | false | Retrieve the RedfishEndpoints with the given discovery status. This can be negated (i.e. !DiscoverOK). Valid values are: EndpointInvalid, EPResponseFailedDecode, HTTPsGetFailed, NotYetQueried, VerificationFailed, ChildVerificationFailed, DiscoverOK |
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
Example responses
200 Response
{
"RedfishEndpoints": [
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Named RedfishEndpoints array representing all current RF endpoints. | RedfishEndpointArray_RedfishEndpointArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Inventory/RedfishEndpoints
Create RedfishEndpoint(s)
Create a new RedfishEndpoint whose ID field is a valid xname. ID can be given explicitly, or if the Hostname or hostname portion of the FQDN is given, and is a valid xname, this will be used for the ID instead. The Hostname/Domain can be given as separate fields and will be used to create a FQDN if one is not given. The reverse is also true. If FQDN is an IP address it will be treated as a hostname with a blank domain. The domain field is used currently to assign the domain for discovered nodes automatically.
If ID is given and is a valid XName, the hostname/domain/FQDN does not need to have an XName as the hostname portion. It can be any address. The ID and FQDN must be unique across all entries.
Body parameter
{
"ID": "x0c0s0b0",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | RedfishEndpoint.1.0.0_RedfishEndpoint | true | none |
Example responses
Success, returns array of created resource URIs
[
{
"URI": "/hsm/v2/Inventory/RedfishEndpoints/x0c0s0b0"
}
]
201 Response
[
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns array of created resource URIs | Inline |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate resource would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 201
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ResourceURI.1.0.0] | false | none | [A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.] |
» ResourceURI | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/RedfishEndpoints
Delete all RedfishEndpoints
Delete all entries in the RedfishEndpoint collection.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/RedfishEndpoints/{xname}
Retrieve RedfishEndpoint at {xname}
Retrieve RedfishEndpoint, located at physical location {xname}.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of RedfishEndpoint record to return. |
Example responses
200 Response
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | RedfishEndpoint entry matching xname/ID | RedfishEndpoint.1.0.0_RedfishEndpoint |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/RedfishEndpoints/{xname}
Delete RedfishEndpoint with ID {xname}
Delete RedfishEndpoint record for a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of RedfishEndpoint record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - component is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /Inventory/RedfishEndpoints/{xname}
Update definition for RedfishEndpoint ID {xname}
Create or update RedfishEndpoint record for a specific xname.
Body parameter
{
"ID": "x0c0s0b0",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of RedfishEndpoint record to create or update. |
body | body | RedfishEndpoint.1.0.0_RedfishEndpoint | true | none |
Example responses
200 Response
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success, return updated RedfishEndpoint resource | RedfishEndpoint.1.0.0_RedfishEndpoint |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to update | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /Inventory/RedfishEndpoints/{xname}
Update (PATCH) definition for RedfishEndpoint ID {xname}
Update (PATCH) RedfishEndpoint record for a specific xname.
Body parameter
{
"ID": "x0c0s0b0",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of RedfishEndpoint record to create or update. |
body | body | RedfishEndpoint.1.0.0_RedfishEndpoint | true | none |
Example responses
200 Response
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success, return updated RedfishEndpoint resource | RedfishEndpoint.1.0.0_RedfishEndpoint |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to update | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/Query/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/Query/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/Query/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/RedfishEndpoints/Query/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/RedfishEndpoints/Query/{xname}
Retrieve RedfishEndpoint query for {xname}, returning RedfishEndpointArray
Given xname and modifiers in query string, retrieve zero or more RedfishEndpoint entries in the form of a RedfishEndpointArray.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of RedfishEndpoint to query. |
Example responses
200 Response
{
"RedfishEndpoints": [
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | RedfishEndpointArray representing results of query. | RedfishEndpointArray_RedfishEndpointArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - no matches | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
The Redfish-discovered properties for a component discovered through, and managed by a RedfishEndpoint, such as a node, blade, and so on. These are obtainable via a discovered RedfishEndpoint or can be looked up by their xnames separately so that just the information for a particular component, e.g. node can be retrieved. They can also provide a back-reference to the parent endpoint.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/ComponentEndpoints
Retrieve ComponentEndpoints Collection
Retrieve the full collection of ComponentEndpoints in the form of a ComponentEndpointArray. Full results can also be filtered by query parameters. Only the first filter parameter of each type is used and the parameters are applied in an AND fashion. If the collection is empty or the filters have no match, an empty array is returned.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | query | string | false | Filter the results based on xname ID(s). Can be specified multiple times for selecting entries with multiple specific xnames. |
redfish_ep | query | string | false | Retrieve all ComponentEndpoints managed by the parent Redfish EP. |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
redfish_type | query | string | false | Retrieve all ComponentEndpoints with the given Redfish type. |
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
Example responses
ComponentEndpointArray representing the ComponentEndpoint collection or a filtered subset thereof.
{
"ComponentEndpoints": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "d0:94:66:00:aa:37",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishSystemInfo": {
"Name": "System Embedded 1",
"Actions": {
"#ComputerSystem.Reset": {
"AllowableValues": [
"On",
"ForceOff"
],
"target": "/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset"
}
},
"EthernetNICInfo": [
{
"RedfishId": "1",
"@odata.id": "/redfish/v1/Systems/System.Embedded.1/EthernetInterfaces/1",
"Description": "Management Network Interface",
"InterfaceEnabled": true,
"MACAddress": "d0:94:66:00:aa:37,",
"PermanentMACAddress": "d0:94:66:00:aa:37"
},
{
"RedfishId": "2",
"@odata.id": "/redfish/v1/Systems/System.Embedded.1/EthernetInterfaces/2",
"Description": "Management Network Interface",
"InterfaceEnabled": true,
"MACAddress": "d0:94:66:00:aa:38",
"PermanentMACAddress": "d0:94:66:00:aa:38"
}
]
}
}
]
}
200 Response
{
"ComponentEndpoints": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ComponentEndpointArray representing the ComponentEndpoint collection or a filtered subset thereof. | ComponentEndpointArray_ComponentEndpointArray |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/ComponentEndpoints
Delete all ComponentEndpoints
Delete all entries in the ComponentEndpoint collection.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/ComponentEndpoints/{xname}
Retrieve ComponentEndpoint at {xname}
Retrieve ComponentEndpoint record for a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of ComponentEndpoint record to return. |
Example responses
HWInventoryByLocation entry matching xname/ID
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "d0:94:66:00:aa:37",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishSystemInfo": {
"Name": "System Embedded 1",
"Actions": {
"#ComputerSystem.Reset": {
"AllowableValues": [
"On",
"ForceOff"
],
"target": "/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset"
}
},
"EthernetNICInfo": [
{
"RedfishId": "1",
"@odata.id": "/redfish/v1/Systems/System.Embedded.1/EthernetInterfaces/1",
"Description": "Management Network Interface",
"InterfaceEnabled": true,
"MACAddress": "d0:94:66:00:aa:37",
"PermanentMACAddress": "d0:94:66:00:aa:37"
},
{
"RedfishId": "2",
"@odata.id": "/redfish/v1/Systems/System.Embedded.1/EthernetInterfaces/2",
"Description": "Management Network Interface",
"InterfaceEnabled": true,
"MACAddress": "ae:12:ce:7a:aa:99",
"PermanentMACAddress": "ae:12:ce:7a:aa:99"
}
]
}
}
200 Response
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | HWInventoryByLocation entry matching xname/ID | ComponentEndpoint.1.0.0_ComponentEndpoint |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ComponentEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/ComponentEndpoints/{xname}
Delete ComponentEndpoint with ID {xname}
Delete ComponentEndpoint for a specific xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of ComponentEndpoint record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - ComponentEndpoint is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
The Redfish-discovered properties for a service discovered through, and managed by a RedfishEndpoint, such as UpdateService, EventService, and so on. These are obtainable via a discovered RedfishEndpoint or can be looked up by their service type and xnames separately so that just the information for a particular service, e.g. UpdateService can be retrieved. They can also provide a back-reference to the parent endpoint.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/ServiceEndpoints
Retrieve ServiceEndpoints Collection
Retrieve the full collection of ServiceEndpoints in the form of a ServiceEndpointArray. Full results can also be filtered by query parameters. Only the first filter parameter of each type is used and the parameters are applied in an AND fashion. If the collection is empty or the filters have no match, an empty array is returned.
Name | In | Type | Required | Description |
---|---|---|---|---|
redfish_ep | query | string | false | Retrieve all ServiceEndpoints managed by the parent Redfish EP. Can be repeated to select groups of endpoints. |
service | query | string | false | Retrieve all ServiceEndpoints of the given Redfish service. |
Example responses
ServiceEndpointArray representing the ServiceEndpoint collection or a filtered subset thereof.
{
"ServiceEndpoints": {
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "UpdateService",
"RedfishSubtype": "Other",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/UpdateService",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/UpdateService",
"ServiceInfo": {
"@odata.context": "/redfish/v1/$metadata#UpdateService.UpdateService",
"@odata.id": "/redfish/v1/UpdateService",
"@odata.type": "#UpdateService.v1_1_0.UpdateService",
"ID": "UpdateService",
"Name": "Update Service",
"Actions": {
"#UpdateService.SimpleUpdate": {
"target": "/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset",
"title": ""
}
},
"FirmwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory"
},
"SoftwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/SoftwareInventory"
},
"ServiceEnabled": "True"
}
}
}
200 Response
{
"ServiceEndpoints": [
{
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointFQDN": "string",
"RedfishURL": "string",
"ServiceInfo": {
"Name": "string"
}
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ServiceEndpointArray representing the ServiceEndpoint collection or a filtered subset thereof. | ServiceEndpointArray_ServiceEndpointArray |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/ServiceEndpoints
Delete all ServiceEndpoints
Delete all entries in the ServiceEndpoint collection.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/ServiceEndpoints/{service}
Retrieve all ServiceEndpoints of a {service}
Retrieve all ServiceEndpoint records for the Redfish service.
Name | In | Type | Required | Description |
---|---|---|---|---|
service | path | string | true | The Redfish service type of the ServiceEndpoint records to return. |
redfish_ep | query | string | false | Retrieve all ServiceEndpoints of type {service} managed by the parent Redfish EP. Can be repeated to select groups of endpoints. |
Example responses
ServiceEndpointArray representing the subset of the ServiceEndpoint collection filtered by {service} or additionally filtered thereof.
{
"ServiceEndpoints": {
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "UpdateService",
"RedfishSubtype": "Other",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/UpdateService",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/UpdateService",
"ServiceInfo": {
"@odata.context": "/redfish/v1/$metadata#UpdateService.UpdateService",
"@odata.id": "/redfish/v1/UpdateService",
"@odata.type": "#UpdateService.v1_1_0.UpdateService",
"ID": "UpdateService",
"Name": "Update Service",
"Actions": {
"#UpdateService.SimpleUpdate": {
"target": "/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset",
"title": ""
}
},
"FirmwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory"
},
"SoftwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/SoftwareInventory"
},
"ServiceEnabled": "True"
}
}
}
200 Response
{
"ServiceEndpoints": [
{
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointFQDN": "string",
"RedfishURL": "string",
"ServiceInfo": {
"Name": "string"
}
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ServiceEndpointArray representing the subset of the ServiceEndpoint collection filtered by {service} or additionally filtered thereof. | ServiceEndpointArray_ServiceEndpointArray |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Service does not exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname}
Retrieve the ServiceEndpoint of a {service} managed by {xname}
Retrieve the ServiceEndpoint for a Redfish service that is managed by xname.
Name | In | Type | Required | Description |
---|---|---|---|---|
service | path | string | true | The Redfish service type of the ServiceEndpoint record to return. |
xname | path | string | true | The locational xname of the RedfishEndpoint that manages the ServiceEndpoint record to return. |
Example responses
ServiceEndpoint entry matching {service}/{xname}
{
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "UpdateService",
"RedfishSubtype": "Other",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/UpdateService",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/UpdateService",
"ServiceInfo": {
"@odata.context": "/redfish/v1/$metadata#UpdateService.UpdateService",
"@odata.id": "/redfish/v1/UpdateService",
"@odata.type": "#UpdateService.v1_1_0.UpdateService",
"ID": "UpdateService",
"Name": "Update Service",
"Actions": {
"#UpdateService.SimpleUpdate": {
"target": "/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset",
"title": ""
}
},
"FirmwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory"
},
"SoftwareInventory": {
"@odata.id": "/redfish/v1/UpdateService/SoftwareInventory"
},
"ServiceEnabled": "True"
}
}
200 Response
{
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointFQDN": "string",
"RedfishURL": "string",
"ServiceInfo": {
"Name": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | ServiceEndpoint entry matching {service}/{xname} | ServiceEndpoint.1.0.0_ServiceEndpoint |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/ServiceEndpoints/{service}/RedfishEndpoints/{xname}
Delete the {service} ServiceEndpoint managed by {xname}
Delete the {service} ServiceEndpoint managed by {xname}
Name | In | Type | Required | Description |
---|---|---|---|---|
service | path | string | true | The Redfish service type of the ServiceEndpoint record to delete. |
xname | path | string | true | The locational xname of the RedfishEndpoint that manages the ServiceEndpoint record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - ServiceEndpoint is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - no matching ServiceEndpoint to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
The MAC address to IP address relation for components in the system. If the component has been discovered by HSM, the xname of the component that has the Ethernet interface will be associated with it as well.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/EthernetInterfaces
GET ALL existing component Ethernet interfaces
Get all component Ethernet interfaces that currently exist, optionally filtering the set, returning an array of component Ethernet interfaces.
Name | In | Type | Required | Description |
---|---|---|---|---|
MACAddress | query | string | false | Retrieve the component Ethernet interface with the provided MAC address. Can be repeated to select multiple component Ethernet interfaces. |
IPAddress | query | string | false | Retrieve the component Ethernet interface with the provided IP address. Can be repeated to select multiple component Ethernet interfaces. A blank string will retrieve component Ethernet interfaces that have no IP address. |
Network | query | string | false | Retrieve the component Ethernet interface with a IP addresses on the provided network. Can be repeated to select multiple component Ethernet interfaces. A blank string will retrieve component Ethernet interfaces that have an IP address with no network. |
ComponentID | query | string | false | Retrieve all component Ethernet interfaces with the provided component ID. Can be repeated to select multiple component Ethernet interfaces. |
Type | query | string | false | Retrieve all component Ethernet interfaces with the provided parent HMS type. Can be repeated to select multiple component Ethernet interfaces. |
OlderThan | query | string | false | Retrieve all component Ethernet interfaces that were last updated before the specified time. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
NewerThan | query | string | false | Retrieve all component Ethernet interfaces that were last updated after the specified time. This takes an RFC3339 formatted string (2006-01-02T15:04:05Z07:00). |
Example responses
200 Response
[
{
"ID": "a4bf012b7310",
"Description": "string",
"MACAddress": "string",
"IPAddresses": [
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
],
"LastUpdate": "2020-05-13T19:18:45.524974Z",
"ComponentID": "x0c0s1b0n0",
"Type": "Node"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | An array containing all existing component Ethernet interface objects. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [CompEthInterface.1.0.0] | false | none | [A component Ethernet interface is an object describing a relation between a MAC address and IP address for components.] |
» ID | string | false | read-only | The ID of the component Ethernet interface. |
» Description | string | false | none | An optional description for the component Ethernet interface. |
» MACAddress | string | true | none | The MAC address of this component Ethernet interface |
» IPAddresses | [CompEthInterface.1.0.0_IPAddressMapping] | false | none | The IP addresses associated with the MAC address for this component Ethernet interface. |
»» IPAddress | string | true | none | The IP address associated with the MAC address for this component Ethernet interface on for this particular network. |
»» Network | string | false | none | The network that this IP addresses is associated with. |
» LastUpdate | string(date-time) | false | read-only | A timestamp for when the component Ethernet interface last was modified. |
» ComponentID | XNameRW.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
» Type | HMSType.1.0.0 | false | read-only | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
Property | Value |
---|---|
Type | CDU |
Type | CabinetCDU |
Type | CabinetPDU |
Type | CabinetPDUOutlet |
Type | CabinetPDUPowerConnector |
Type | CabinetPDUController |
Type | Cabinet |
Type | Chassis |
Type | ChassisBMC |
Type | CMMRectifier |
Type | CMMFpga |
Type | CEC |
Type | ComputeModule |
Type | RouterModule |
Type | NodeBMC |
Type | NodeEnclosure |
Type | NodeEnclosurePowerSupply |
Type | HSNBoard |
Type | MgmtSwitch |
Type | MgmtHLSwitch |
Type | CDUMgmtSwitch |
Type | Node |
Type | Processor |
Type | Drive |
Type | StorageGroup |
Type | NodeNIC |
Type | Memory |
Type | NodeAccel |
Type | NodeAccelRiser |
Type | NodeFpga |
Type | HSNAsic |
Type | RouterFpga |
Type | RouterBMC |
Type | HSNLink |
Type | HSNConnector |
Type | INVALID |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Inventory/EthernetInterfaces
CREATE a new component Ethernet interface (via POST)
Create a new component Ethernet interface.
Body parameter
{
"Description": "string",
"MACAddress": "string",
"IPAddresses": [
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
],
"ComponentID": "x0c0s1b0n0"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | CompEthInterface.1.0.0 | true | none |
Example responses
Success, returns array containing the created resource URI.
{
"uri": "/hsm/v2/Inventory/a4bf012b7311"
}
201 Response
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns array containing the created resource URI. | ResourceURI.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate component Ethernet interface would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/EthernetInterfaces
Clear the component Ethernet interface collection.
Delete all component Ethernet interface entries.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) response code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/EthernetInterfaces/{ethInterfaceID}
GET existing component Ethernet interface {ethInterfaceID}
Retrieve the component Ethernet interface which was created with the given {ethInterfaceID}.
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface to return. |
Example responses
200 Response
{
"ID": "a4bf012b7310",
"Description": "string",
"MACAddress": "string",
"IPAddresses": [
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
],
"LastUpdate": "2020-05-13T19:18:45.524974Z",
"ComponentID": "x0c0s1b0n0",
"Type": "Node"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Component Ethernet interface entry identified by {ethInterfaceID}, if it exists. | CompEthInterface.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/EthernetInterfaces/{ethInterfaceID}
DELETE existing component Ethernet interface with {ethInterfaceID}
Delete the given component Ethernet interface with {ethInterfaceID}.
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - component Ethernet interface is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - No component Ethernet interface with ethInterfaceID. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /Inventory/EthernetInterfaces/{ethInterfaceID}
UPDATE metadata for existing component Ethernet interface {ethInterfaceID}
To update the IP address, CompID, and/or description of a component Ethernet interface, a PATCH operation can be used. Omitted fields are not updated. The ‘LastUpdate’ field will be updated if an IP address is provided.
Body parameter
{
"Description": "string",
"IPAddresses": [
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
],
"ComponentID": "x0c0s1b0n0"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface to update. |
body | body | CompEthInterface.1.0.0_Patch | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | The component Ethernet interface with this ethInterfaceID does not exist. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses
Retrieve all IP addresses of a component Ethernet interface {ethInterfaceID}
Retrieve all IP addresses of a component Ethernet interface {ethInterfaceID}
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface to retrieve the IP addresses of. |
Example responses
200 Response
[
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | IP addresses of the component Ethernet interface entry identified by {ethInterfaceID}, if it exists. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [CompEthInterface.1.0.0_IPAddressMapping] | false | none | [A IP address Mapping maps a IP address to a network. In a Component Ethernet Interface it is used to describe what IP addresses and their networks that are associated with it.] |
» IPAddress | string | true | none | The IP address associated with the MAC address for this component Ethernet interface on for this particular network. |
» Network | string | false | none | The network that this IP addresses is associated with. |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses
CREATE a new IP address mapping in a component Ethernet interface (via POST)
Create a new IP address mapping in a component Ethernet interface {ethInterfaceID}.
Body parameter
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface to add the IP address to. |
body | body | CompEthInterface.1.0.0_IPAddressMapping | true | none |
Example responses
201 Response
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns the created resource URI. | ResourceURI.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate IP address in component Ethernet interface would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress}
UPDATE metadata for existing IP address {ipAddress} in a component Ethernet interface {ethInterfaceID
“To update the network of an IP address in a component Ethernet interface, a PATCH operation can be used. Omitted fields are not updated. The ‘LastUpdate’ field of the component Ethernet interface will be updated”
Body parameter
{
"Network": "string"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface with the IP address to patch. |
ipAddress | path | string | true | The IP address to patch from the component Ethernet interface. |
body | body | CompEthInterface.1.0.0_IPAddressMapping_Patch | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - No IP address with ipAddress exists on the specified component Ethernet interface. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Inventory/EthernetInterfaces/{ethInterfaceID}/IPAddresses/{ipAddress}
DELETE existing IP address mapping with {ipAddress} from a component Ethernet interface with {ethInterfaceID}
Delete the given IP address mapping with {ipAddress} from a component Ethernet interface with {ethInterfaceID}. The ‘LastUpdate’ field of the component Ethernet interface will be updated"
Name | In | Type | Required | Description |
---|---|---|---|---|
ethInterfaceID | path | string | true | The ID of the component Ethernet interface to delete the IP address from |
ipAddress | path | string | true | The IP address to delete from the component Ethernet interface. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - IP address mapping is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - No IP address with ipAddress exists on the specified component Ethernet interface | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
A group is an informal, possibly overlapping division of the system that groups Components (most frequently nodes) under an administratively chosen label (i.e. group name). Unlike partitions, components can be members of any number of groups.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /groups
Retrieve all existing groups
Retrieve all groups that currently exist, optionally filtering the set, returning an array of groups.
Name | In | Type | Required | Description |
---|---|---|---|---|
group | query | string | false | Retrieve the group with the provided group label. Can be repeated to select multiple groups. |
tag | query | string | false | Retrieve all groups associated with the given free-form tag from the tags field. |
Example responses
200 Response
[
{
"label": "blue",
"description": "This is the blue group",
"tags": [
"optional_tag1",
"optional_tag2"
],
"exclusiveGroup": "optional_excl_group",
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x1c0s2b0n0",
"x1c0s2b0n1"
]
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Groups array containing all existing group objects. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Group.1.0.0] | false | none | [A group is an informal, possibly overlapping division of the system that groups components under an administratively chosen label (i.e. group name). Unlike partitions, components can be members of any number of groups.] |
» label | ResourceName | true | none | Acceptable format for certain user-requested string identifiers. |
» description | string | false | none | A one-line, user-provided description of the group. |
» tags | [ResourceName] | false | none | A free-form array of strings to provide extra organization/filtering. Not to be confused with labels/groups. |
» exclusiveGroup | ResourceName | false | none | Acceptable format for certain user-requested string identifiers. |
» members | Members.1.0.0 | false | none | The members are a fully enumerated (i.e. no implied members besides those explicitly provided) representation of the components a partition or group |
»» ids | [XNameRW.1.0.0] | false | none | Set of Component XName IDs that represent the membership of the group or partition. |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /groups
Create a new group
Create a new group identified by the group_label field. Label should be given explicitly, and should not conflict with any existing group, or an error will occur.
Note that if the exclusiveGroup field is present, the group is not allowed to add a member that exists under a different group/label where the exclusiveGroup field is the same. This can be used to create groups of groups where a component may only be present in one of the set.
Body parameter
{
"label": "blue",
"description": "This is the blue group",
"tags": [
"optional_tag1",
"optional_tag2"
],
"exclusiveGroup": "optional_excl_group",
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x1c0s2b0n0",
"x1c0s2b0n1"
]
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Group.1.0.0 | true | none |
Example responses
Success, returns array containing the created resource URI.
[
{
"uri": "/hsm/v2/groups/mygrouplabel"
}
]
201 Response
[
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns array containing the created resource URI. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate resource would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 201
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ResourceURI.1.0.0] | false | none | [A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.] |
» ResourceURI | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /groups/{group_label}
Retrieve existing group {group_label}
Retrieve the group which was created with the given {group_label}.
Name | In | Type | Required | Description |
---|---|---|---|---|
group_label | path | string | true | Label name of the group to return. |
partition | query | string | false | AND the members set by the given partition name (p#.#). NULL will return the group members not in ANY partition. |
Example responses
200 Response
{
"label": "blue",
"description": "This is the blue group",
"tags": [
"optional_tag1",
"optional_tag2"
],
"exclusiveGroup": "optional_excl_group",
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x1c0s2b0n0",
"x1c0s2b0n1"
]
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Group entry identified by {group_label}, if it exists. | Group.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /groups/{group_label}
Delete existing group with {group_label}
Delete the given group with {group_label}. Any members previously in the group will no longer have the deleted group label associated with them.
Name | In | Type | Required | Description |
---|---|---|---|---|
group_label | path | string | true | Label (i.e. name) of the group to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - component is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - No group matches label. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /groups/{group_label}
Update metadata for existing group {group_label}
To update the tags array and/or description, a PATCH operation can be used. Omitted fields are not updated. This cannot be used to completely replace the members list. Rather, individual members can be removed or added with the POST/DELETE {group_label}/members API below.
Body parameter
{
"description": "This is an updated group description",
"tags": [
"new_tag",
"existing_tag"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
group_label | path | string | true | Label (i.e. name) of the group to update. |
body | body | Group.1.0.0_Patch | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | The group with this label did not exist. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/labels HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/labels \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/labels', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/labels", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /groups/labels
Retrieve all existing group labels
Retrieve a string array of all group labels (i.e. group names) that currently exist in HSM.
Example responses
Array of group labels which form the names of all existing groups, or an empty array if none currently exist.
[
"blue",
"green",
"red",
"compute_a"
]
200 Response
[
"string"
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Array of group labels which form the names of all existing groups, or an empty array if none currently exist. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /groups/{group_label}/members
Retrieve all members of existing group
Retrieve members of an existing group {group_label}, optionally filtering the set, returning a members set containing the component xname IDs.
Name | In | Type | Required | Description |
---|---|---|---|---|
group_label | path | string | true | Specifies an existing group {group_label} to query the members of. |
partition | query | string | false | AND the members set by the given partition name (p#.#). NULL will return the group members not in ANY partition. |
Example responses
200 Response
{
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Members set including component xname IDs which are members of group {group_label}. If none exist, an empty array with be returned. | Members.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does not exist - No such group {group_label} | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /groups/{group_label}/members
Create new member of existing group (via POST)
Create a new member of group {group_label} with the component xname ID provided in the payload. New member should not already exist in the given group.
Body parameter
{
"id": "x0c0s1b0n0"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
group_label | path | string | true | Specifies an existing group {group_label} to add the new member to. |
body | body | MemberID | true | none |
Example responses
Success, returns array containing the created member URI.
[
{
"uri": "/hsm/v2/groups/mygrouplabel/members/x0c0s1b0n0"
}
]
201 Response
[
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns array containing the created member URI. | Inline |
400 | Bad Request | Bad Request - e.g. malformed string | Problem7807 |
404 | Not Found | Does not exist - No such group {group_label} | Problem7807 |
409 | Conflict | Conflict. Duplicate resource would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 201
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ResourceURI.1.0.0] | false | none | [A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.] |
» ResourceURI | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members/{xname_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members/{xname_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members/{xname_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/groups/{group_label}/members/{xname_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /groups/{group_label}/members/{xname_id}
Delete member from existing group
Delete component {xname_id} from the members of group {group_label}.
Name | In | Type | Required | Description |
---|---|---|---|---|
group_label | path | string | true | Specifies an existing group {group_label} to remove the member from. |
xname_id | path | string | true | Member of {group_label} to remove. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - entry deleted. Message contains count of deleted items (should always be one). | Response_1.0.0 |
400 | Bad Request | Bad Request, malformed group label or component xname_id | Problem7807 |
404 | Not Found | Does Not Exist - no such member or group. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
A partition is a formal, non-overlapping division of the system that forms an administratively distinct sub-system e.g. for implementing multi-tenancy.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /partitions
Retrieve all existing partitions
Retrieve all partitions that currently exist, optionally filtering the set, returning an array of partition records.
Name | In | Type | Required | Description |
---|---|---|---|---|
partition | query | string | false | Retrieve the partition with the provided partition name (p#.#). Can be repeated to select multiple partitions. |
tag | query | string | false | Retrieve all partitions associated with the given free-form tag from the tags field. |
Example responses
200 Response
[
{
"name": "p1",
"description": "This is partition 1",
"tags": [
"optional_tag_a",
"optional_tag1"
],
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Array containing all existing partition objects. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Partition.1.0.0] | false | none | [A partition is a formal, non-overlapping division of the system that forms an administratively distinct sub-system e.g. for implementing multi-tenancy.] |
» name | ResourceName | true | none | Acceptable format for certain user-requested string identifiers. |
» description | string | false | none | A one-line, user-provided description of the partition. |
» tags | [ResourceName] | false | none | A free-form array of strings to provide extra organization/filtering. Not to be confused with labels/groups. |
» members | Members.1.0.0 | false | none | The members are a fully enumerated (i.e. no implied members besides those explicitly provided) representation of the components a partition or group |
»» ids | [XNameRW.1.0.0] | false | none | Set of Component XName IDs that represent the membership of the group or partition. |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /partitions
Create new partition (via POST)
Create a new partition identified by the partition_name field. Partition names should be of the format p# or p#.# (hard_part.soft_part). Partition name should be given explicitly, and should not conflict with any existing partition, or an error will occur. In addition, the member list must not overlap with any existing partition.
Body parameter
{
"name": "p1",
"description": "This is partition 1",
"tags": [
"optional_tag_a",
"optional_tag1"
],
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Partition.1.0.0 | true | none |
Example responses
Success, returns array containing the created resource URI.
[
{
"uri": "/hsm/v2/partitions/p1"
}
]
201 Response
[
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns array containing the created resource URI. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
409 | Conflict | Conflict. Duplicate resource would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 201
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ResourceURI.1.0.0] | false | none | [A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.] |
» ResourceURI | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /partitions/{partition_name}
Retrieve existing partition {partition_name}
Retrieve the partition which was created with the given {partition_name}.
Name | In | Type | Required | Description |
---|---|---|---|---|
partition_name | path | string | true | Partition name to be retrieved |
Example responses
200 Response
{
"name": "p1",
"description": "This is partition 1",
"tags": [
"optional_tag_a",
"optional_tag1"
],
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Partition entry identified by {partition_name}, if it exists. | Partition.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /partitions/{partition_name}
Delete existing partition with {partition_name}
Delete partition {partition_name}. Any members previously in the partition will no longer have the deleted partition name associated with them.
Name | In | Type | Required | Description |
---|---|---|---|---|
partition_name | path | string | true | Partition name of the partition to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - component is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - No partition matches partition_name. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /partitions/{partition_name}
Update metadata for existing partition {partition_name}
Update the tags array and/or description by using PATCH. Omitted fields are not updated. This cannot be used to completely replace the members list. Rather, individual members can be removed or added with the POST/DELETE {partition_name}/members API.
Body parameter
{
"description": "This is an updated partition description",
"tags": [
"new_tag",
"existing_tag"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
partition_name | path | string | true | Name of the partition to update. |
body | body | Partition.1.0.0_Patch | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success | None |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | The partition with this partition_name did not exist. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/names HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/names \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/names', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/names", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /partitions/names
Retrieve all existing partition names
Retrieve a string array of all partition names that currently exist in HSM. These are just the names, not the complete partition records.
Example responses
Array of partition names comprising all partitions known to HSM at the present time, or an empty array if none currently exist.
[
"p1",
"p2"
]
200 Response
[
"string"
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Array of partition names comprising all partitions known to HSM at the present time, or an empty array if none currently exist. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /partitions/{partition_name}/members
Retrieve all members of existing partition
Retrieve all members of existing partition {partition_name}, optionally filtering the set, returning a members set that includes the component xname IDs.
Name | In | Type | Required | Description |
---|---|---|---|---|
partition_name | path | string | true | Existing partition {partition_name} to query the members of. |
Example responses
200 Response
{
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Members set including component xname IDs which are members of partition {partition_name}. If none exist, an empty array will be returned. | Members.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does not exist - No such partition {partition_name} | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /partitions/{partition_name}/members
Create new member of existing partition (via POST)
Create a new member of partition {partition_name} with the component xname ID provided in the payload. New member should not already exist in the given partition
Body parameter
{
"id": "x0c0s1b0n0"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
partition_name | path | string | true | Existing partition {partition_name} to add the new member to. |
body | body | MemberID | true | none |
Example responses
Success, returns array containing the created member URI.
[
{
"uri": "/hsm/v2/partitions/p1/members/x0c0s1b0n0"
}
]
201 Response
[
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Success, returns array containing the created member URI. | Inline |
400 | Bad Request | Bad Request - Bad partition_name or malformed string? | Problem7807 |
404 | Not Found | Does not exist - No such partition {partition_name} | Problem7807 |
409 | Conflict | Conflict. Duplicate resource would be created. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 201
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ResourceURI.1.0.0] | false | none | [A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.] |
» ResourceURI | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members/{xname_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members/{xname_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members/{xname_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/partitions/{partition_name}/members/{xname_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /partitions/{partition_name}/members/{xname_id}
Delete member from existing partition
Delete component {xname_id} from the members of partition {partition_name}.
Name | In | Type | Required | Description |
---|---|---|---|---|
partition_name | path | string | true | Existing partition {partition_name} to remove the member from. |
xname_id | path | string | true | Member of {partition_name} to remove. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - entry deleted. Message contains count of deleted items (should always be one). | Response_1.0.0 |
400 | Bad Request | Bad Request, malformed partition_name or xname_id | Problem7807 |
404 | Not Found | Does Not Exist - no such member or partition. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
A membership is a mapping of a component xname to its set of group labels and partition names.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /memberships
Retrieve all memberships for components
Display group labels and partition names for each component xname ID (where applicable).
Name | In | Type | Required | Description |
---|---|---|---|---|
id | query | string | false | Filter the results based on xname ID(s). Can be specified multiple times for selecting entries with multiple specific xnames. |
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
state | query | string | false | Filter the results based on HMS state like Ready, On etc. Can be specified multiple times for selecting entries in different states. |
flag | query | string | false | Filter the results based on HMS flag value like OK, Alert etc. Can be specified multiple times for selecting entries with different flags. |
role | query | string | false | Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are: |
subrole | query | string | false | Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are: |
enabled | query | string | false | Filter the results based on enabled status (true or false). |
softwarestatus | query | string | false | Filter the results based on software status. Software status is a free form string. Matching is case-insensitive. Can be specified multiple times for selecting entries with different software statuses. |
subtype | query | string | false | Filter the results based on HMS subtype. Can be specified multiple times for selecting entries with different subtypes. |
arch | query | string | false | Filter the results based on architecture. Can be specified multiple times for selecting components with different architectures. |
class | query | string | false | Filter the results based on HMS hardware class. Can be specified multiple times for selecting entries with different classes. |
nid | query | string | false | Filter the results based on NID. Can be specified multiple times for selecting entries with multiple specific NIDs. |
nid_start | query | string | false | Filter the results based on NIDs equal to or greater than the provided integer. |
nid_end | query | string | false | Filter the results based on NIDs less than or equal to the provided integer. |
partition | query | string | false | Restrict search to the given partition (p#.#). One partition can be combined with at most one group argument which will be treated as a logical AND. NULL will return components in NO partition. |
group | query | string | false | Restrict search to the given group label. One group can be combined with at most one partition argument which will be treated as a logical AND. NULL will return components in NO groups. |
role: Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are:
subrole: Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are:
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
state | Unknown |
state | Empty |
state | Populated |
state | Off |
state | On |
state | Standby |
state | Halt |
state | Ready |
flag | OK |
flag | Warning |
flag | Alert |
flag | Locked |
flag | Unknown |
arch | X86 |
arch | ARM |
arch | Other |
arch | UNKNOWN |
class | River |
class | Mountain |
class | Hill |
Example responses
200 Response
[
{
"id": "x0c0s22b0n0",
"nid": 45,
"partitionName": "p1",
"groupLabels": [
"group1",
"group2"
]
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Array containing component xname IDs to their group and partition memberships. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Membership.1.0.0] | false | none | [A membership is a mapping of a component xname to its set of group labels and partition names.] |
» id | XName.1.0.0 | false | read-only | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
» partitionName | string | false | none | The name is a human-readable identifier for the partition and uniquely identifies it. |
» groupLabels | [string] | false | none | An array with all group labels the component is associated with The label is the human-readable identifier for a group and uniquely identifies it. |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/memberships/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /memberships/{xname}
Retrieve membership for component {xname}
Display group labels and partition names for a given component xname ID.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Component xname ID (i.e. locational identifier) |
Example responses
200 Response
{
"id": "x0c0s22b0n0",
"nid": 45,
"partitionName": "p1",
"groupLabels": [
"group1",
"group2"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Membership info for component at {xname} | Membership.1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Not Found - no such xname. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Contains status information about the discovery operation for clients to query. The discover operation returns a link or links to status objects so that a client can determine when the discovery operation is complete.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/DiscoveryStatus
Retrieve all DiscoveryStatus entries in collection
Retrieve all DiscoveryStatus entries as an unnamed array.
Example responses
200 Response
[
{
"ID": 0,
"Status": "Complete",
"LastUpdateTime": "2018-08-09 03:55:57.000000",
"Details": null
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Unnamed DiscoveryStatus array representing all entries in collection. | Inline |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [DiscoveryStatus.1.0.0_DiscoveryStatus] | false | none | [Returns info on the current status of a discovery operation with the given ID returned when a Discover action is requested.] |
» ID | number(int32) | false | read-only | The ID number of the discover operation. |
» Status | string | false | read-only | Describes the status of the given Discover operation. |
» LastUpdateTime | string(date-time) | false | read-only | The time that the Status field was last updated. |
» Details | DiscoveryStatus.1.0.0_Details | false | none | Details accompanying a DiscoveryStatus entry. Optional. Reserved for future use. |
Property | Value |
---|---|
Status | NotStarted |
Status | Pending |
Status | InProgress |
Status | Complete |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus/{id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus/{id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus/{id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/DiscoveryStatus/{id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Inventory/DiscoveryStatus/{id}
Retrieve DiscoveryStatus entry matching {id}
Retrieve DiscoveryStatus entry with the specific ID.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | number(int32) | true | Positive integer ID of DiscoveryStatus entry to retrieve |
Example responses
200 Response
{
"ID": 0,
"Status": "Complete",
"LastUpdateTime": "2018-08-09 03:55:57.000000",
"Details": null
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. Returns matching DiscoveryStatus entry. | DiscoveryStatus.1.0.0_DiscoveryStatus |
400 | Bad Request | Bad Request, e.g. not a positive integer | Problem7807 |
404 | Not Found | Not found (no such ID) | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Trigger a discovery of system component data by interrogating all, or a subset, of the RedfishEndpoints currently known to the system.
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Discover HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Discover \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Discover', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Inventory/Discover", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Inventory/Discover
Create Discover operation request
Discover and populate database with component data (ComponentEndpoints, HMS Components, HWInventory) based on interrogating RedfishEndpoint entries. If not all RedfishEndpoints should be discovered, an array of xnames can be provided in the DiscoverInput payload.
Body parameter
{
"xnames": [
"x0c0s0b0"
],
"force": false
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Discover.1.0.0_DiscoverInput | false | none |
Example responses
Success, discovery started. DiscoverStatus link(s) to check in returned URI array.
[
{
"URI": "/hsm/v2/Inventory/DiscoveryStatus/0"
}
]
200 Response
[
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success, discovery started. DiscoverStatus link(s) to check in returned URI array. | Inline |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | One or more requested RedfishEndpoint xname IDs was not found. | Problem7807 |
409 | Conflict | Conflict. One or more DiscoveryStatus objects is InProgress or Pending and prevents this operation from starting. Try again later or use force option (should never be needed unless some kind of problem has occurred). Simultaneous discoveries could cause one or both to fail. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ResourceURI.1.0.0] | false | none | [A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.] |
» ResourceURI | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Manage subscriptions to state change notifications (SCNs) from HSM.
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /Subscriptions/SCN
Create a subscription for state change notifications
Request a subscription for state change notifications for a set of component states. This will create a new subscription and produce a unique ID for the subscription. This will not affect the existing subscriptions.
Body parameter
{
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Subscriptions_SCNPostSubscription | true | none |
Example responses
200 Response
{
"ID": "42",
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A new subscription was created. The subscription ID is included in the response. | Subscriptions_SCNSubscriptionArrayItem.1.0.0 |
400 | Bad Request | Bad Request. Malformed JSON. Verify all JSON formatting in payload. | Problem7807 |
409 | Conflict | The subscription already exists for the specified subscriber and URL. | Problem7807 |
500 | Internal Server Error | Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Subscriptions/SCN
Delete all state change notification subscriptions
Delete all subscriptions.
Example responses
500 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. Subscriptions deleted successfully. | None |
500 | Internal Server Error | Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Subscriptions/SCN
Retrieve currently-held state change notification subscriptions
Retrieve all information on currently held state change notification subscriptions.
Example responses
200 Response
{
"SubscriptionList": [
{
"ID": "42",
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. Currently held subscriptions are returned. | Subscriptions_SCNSubscriptionArray |
500 | Internal Server Error | Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /Subscriptions/SCN/{id}
Update a subscription for state change notifications
Update an existing state change notification subscription in whole. This will overwrite the specified subscription.
Body parameter
{
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | This is the ID associated with the subscription that was generated at its creation. |
body | body | Subscriptions_SCNPostSubscription | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. The subscription has been overwritten. | None |
400 | Bad Request | Bad Request. Malformed JSON. Verify all JSON formatting in payload. | Problem7807 |
404 | Not Found | The subscription does not exist. | Problem7807 |
500 | Internal Server Error | Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /Subscriptions/SCN/{id}
Update a subscription for state change notifications
Update a subscription for state change notifications to add or remove triggers.
Body parameter
{
"Op": "add",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | This is the ID associated with the subscription that was generated at its creation. |
body | body | Subscriptions_SCNPatchSubscription | true | none |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Success. | None |
400 | Bad Request | Bad Request. Malformed JSON. Verify all JSON formatting in payload. | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
500 | Internal Server Error | Internal server error. Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /Subscriptions/SCN/{id}
Delete a state change notification subscription
Delete a state change notification subscription.
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | This is the ID associated with the subscription that was generated at its creation. |
Example responses
400 Response
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. Subscription deleted successfully. | None |
400 | Bad Request | Bad Request. | Problem7807 |
500 | Internal Server Error | Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/Subscriptions/SCN/{id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /Subscriptions/SCN/{id}
Retrieve a currently-held state change notification subscription
Return the information on a currently held state change notification subscription
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | true | This is the ID associated with the subscription that was generated at its creation. |
Example responses
200 Response
{
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Success. A currently held subscription is returned. | Subscriptions_SCNPostSubscription |
500 | Internal Server Error | Database error. | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Manage locks and reservations on components.
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/remove HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/remove \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/remove', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/remove", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/reservations/remove
Forcibly deletes existing reservations.
Given a list of components, forcibly deletes any existing reservation. Does not change lock state; does not disable the reservation ability of the component. An empty set of xnames will delete reservations on all xnames. This functionality should be used sparingly, the normal flow should be to release reservations, versus removing them.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AdminReservationRemove.1.0.0 | true | List of xnames to remove reservations. A rigid processing model will result in the entire set of xnames not having their reservation removed if an xname doesn’t exist, or isn’t reserved. A flexible processing model will perform all actions possible. |
Example responses
202 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Accepted. Returns a count + list of xnames that succeeded or failed the operation. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request; something is wrong with the structure received. Will not be used to represent failure to accomplish the operation, that will be returned in the standard payload. | Problem7807 |
500 | Internal Server Error | Server error, could not delete reservations | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/release HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/release \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/release', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations/release", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/reservations/release
Releases existing reservations.
Given a list of {xname & reservation key}, releases the associated reservations.
Body parameter
{
"ReservationKeys": [
{
"ID": "string",
"Key": "string"
}
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ReservedKeys.1.0.0 | true | List of {xname and reservation key} to release reservations. A rigid processing model will result in the entire set of xnames not having their reservation released if an xname doesn’t exist, or isn’t reserved. A flexible processing model will perform all actions possible. |
Example responses
202 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Accepted. Returns a count + list of xnames that succeeded or failed the operation. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request; something is wrong with the structure received. Will not be used to represent failure to accomplish the operation, that will be returned in the standard payload. | Problem7807 |
500 | Internal Server Error | Server error, could not delete reservations | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/reservations", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/reservations
Create reservations
Creates reservations on a set of xnames of infinite duration. Component must be locked to create a reservation.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AdminReservationCreate.1.0.0 | true | List of components to create reservations. A rigid processing model will result in the entire set of xnames not having reservations created if an xname doesn’t exist, or isn’t locked, or if already reserved. A flexible processing model will perform all actions possible. |
Example responses
202 Response
{
"Success": [
{
"ID": "string",
"DeputyKey": "string",
"ReservationKey": "string"
}
],
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Accepted request. See response for details. | AdminReservationCreate_Response.1.0.0 |
400 | Bad Request | Bad request; something is wrong with the structure received. Will not be used to represent failure to accomplish the operation, that will be returned in the standard payload. | Problem7807 |
500 | Internal Server Error | Server error, could not accept reservations | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/release HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/release \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/release', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/release", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/service/reservations/release
Releases existing reservations.
Given a list of {xname & reservation key}, releases the associated reservations.
Body parameter
{
"ReservationKeys": [
{
"ID": "string",
"Key": "string"
}
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ReservedKeys.1.0.0 | true | List of {xname and reservation key} to release reservations. A rigid processing model will result in the entire set of xnames not having their reservation released if an xname doesn’t exist, or isn’t reserved. A flexible processing model will perform all actions possible. |
Example responses
202 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Accepted. Returns a count + list of xnames that succeeded or failed the operation. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request; something is wrong with the structure received. Will not be used to represent failure to accomplish the operation, that will be returned in the standard payload. | Problem7807 |
500 | Internal Server Error | Server error, could not delete reservations | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/service/reservations
Create reservations
Creates reservations on a set of xnames of finite duration. Component must be unlocked to create a reservation.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid",
"ReservationDuration": 1
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ServiceReservationCreate.1.0.0 | true | List of components to create reservations. A rigid processing model will result in the entire set of xnames not having reservations created if an xname doesn’t exist, or isn’t locked, or if already reserved. A flexible processing model will perform all actions possible. |
Example responses
202 Response
{
"Success": [
{
"ID": "string",
"DeputyKey": "string",
"ReservationKey": "string",
"ExpirationTime": "2019-08-24T14:15:22Z"
}
],
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Accepted request. See response for details. | ServiceReservationCreate_Response.1.0.0 |
400 | Bad Request | Bad request; something is wrong with the structure received. Will not be used to represent failure to accomplish the operation, that will be returned in the standard payload. | Problem7807 |
500 | Internal Server Error | Server error, could not accept reservations | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/renew HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/renew \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/renew', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/renew", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/service/reservations/renew
Renew existing reservations.
Given a list of {xname & reservation key}, renews the associated reservations.
Body parameter
{
"ReservationKeys": [
{
"ID": "string",
"Key": "string"
}
],
"ProcessingModel": "rigid",
"ReservationDuration": 1
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ReservedKeysWithRenewal.1.0.0 | true | List of {xname and reservation key} to renew reservations. A rigid processing model will result in the entire set of xnames not having their reservation renewed if an xname doesn’t exist, or isn’t reserved. A flexible processing model will perform all actions possible. |
Example responses
202 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Accepted. Returns a count + list of xnames that succeeded or failed the operation. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request; something is wrong with the structure received. Will not be used to represent failure to accomplish the operation, that will be returned in the standard payload. | Problem7807 |
500 | Internal Server Error | Server error, could not delete reservations | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/check HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/check \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/check', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/service/reservations/check", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/service/reservations/check
Check the validity of reservations.
Using xname + reservation key check on the validity of reservations.
Body parameter
{
"DeputyKeys": [
{
"ID": "string",
"Key": "string"
}
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | DeputyKeys.1.0.0 | true | List of components & deputy keys to check on validity of reservations. |
Example responses
202 Response
{
"Success": [
{
"ID": "string",
"DeputyKey": "string",
"ExpirationTime": "2019-08-24T14:15:22Z"
}
],
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | Created reservations. | ServiceReservationCheck_Response.1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not check reservations. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/status
Retrieve lock status for component IDs.
Using component ID retrieve the status of any lock and/or reservation.
Body parameter
{
"ComponentIDs": [
"string"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | Xnames | true | List of components to retrieve status. |
Example responses
200 Response
{
"Components": [
{
"ID": "x1001c0s0b0",
"Locked": false,
"Reserved": true,
"CreatedTime": "2019-08-24T14:15:22Z",
"ExpirationTime": "2019-08-24T14:15:22Z",
"ReservationDisabled": false
}
],
"NotFound": [
"x1000c0s0b0"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Got lock(s) status. | AdminStatusCheck_Response.1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not get lock status. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /locks/status
Retrieve lock status for all components or a filtered subset of components.
Retrieve the status of all component locks and/or reservations. Results can be filtered by query parameters.
Name | In | Type | Required | Description |
---|---|---|---|---|
type | query | string | false | Filter the results based on HMS type like Node, NodeEnclosure, NodeBMC etc. Can be specified multiple times for selecting entries of multiple types. |
state | query | string | false | Filter the results based on HMS state like Ready, On etc. Can be specified multiple times for selecting entries in different states. |
role | query | string | false | Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are: |
subrole | query | string | false | Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are: |
locked | query | boolean | false | Return components based on the ‘Locked’ field of their lock status. |
reserved | query | boolean | false | Return components based on the ‘Reserved’ field of their lock status. |
reservationDisabled | query | boolean | false | Return components based on the ‘ReservationDisabled’ field of their lock status. |
role: Filter the results based on HMS role. Can be specified multiple times for selecting entries with different roles. Valid values are:
subrole: Filter the results based on HMS subrole. Can be specified multiple times for selecting entries with different subroles. Valid values are:
Parameter | Value |
---|---|
type | CDU |
type | CabinetCDU |
type | CabinetPDU |
type | CabinetPDUOutlet |
type | CabinetPDUPowerConnector |
type | CabinetPDUController |
type | Cabinet |
type | Chassis |
type | ChassisBMC |
type | CMMRectifier |
type | CMMFpga |
type | CEC |
type | ComputeModule |
type | RouterModule |
type | NodeBMC |
type | NodeEnclosure |
type | NodeEnclosurePowerSupply |
type | HSNBoard |
type | MgmtSwitch |
type | MgmtHLSwitch |
type | CDUMgmtSwitch |
type | Node |
type | Processor |
type | Drive |
type | StorageGroup |
type | NodeNIC |
type | Memory |
type | NodeAccel |
type | NodeAccelRiser |
type | NodeFpga |
type | HSNAsic |
type | RouterFpga |
type | RouterBMC |
type | HSNLink |
type | HSNConnector |
type | INVALID |
state | Unknown |
state | Empty |
state | Populated |
state | Off |
state | On |
state | Standby |
state | Halt |
state | Ready |
Example responses
200 Response
{
"Components": [
{
"ID": "x1001c0s0b0",
"Locked": false,
"Reserved": true,
"CreatedTime": "2019-08-24T14:15:22Z",
"ExpirationTime": "2019-08-24T14:15:22Z",
"ReservationDisabled": false
}
],
"NotFound": [
"x1000c0s0b0"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Got lock(s) status. | AdminStatusCheck_Response.1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not get lock status. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/lock HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/lock \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/lock', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/lock", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/lock
Locks components.
Using a component create a lock. Cannot be locked if already locked, or if there is a current reservation.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AdminLock.1.0.0 | true | List of xnames to lock. |
Example responses
200 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries locked. Message contains count of locked items. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not lock lock. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/unlock HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/unlock \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/unlock', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/unlock", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/unlock
Unlocks components.
Using a component unlock a lock. Cannot be unlocked if already unlocked.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AdminLock.1.0.0 | true | List of xnames to unlock. |
Example responses
200 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries unlocked. Message contains count of unlocked locks. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not unlock lock. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/repair HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/repair \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/repair', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/repair", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/repair
Repair components lock and reservation ability.
Repairs the disabled status of an xname allowing new reservations to be created.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AdminLock.1.0.0 | true | List of xnames to repair. |
Example responses
200 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more locks repaired. Message contains count of repaired locks. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not repair lock. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/disable HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/disable \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/disable', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/locks/disable", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /locks/disable
Disables the ability to create a reservation on components.
Disables the ability to create a reservation on components, deletes any existing reservations. Does not change lock state. Attempting to disable an already-disabled component will not result in an error.
Body parameter
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | AdminLock.1.0.0 | true | List of xnames to disable. |
Example responses
200 Response
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more locks disabled. Message contains count of disabled locks. | XnameResponse_1.0.0 |
400 | Bad Request | Bad request. | Problem7807 |
500 | Internal Server Error | Server error, could not disable lock. | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Power mapping of components to the components supplying them power. This may contain components in the system whether populated or not.
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /sysinfo/powermaps
Retrieve all PowerMaps, returning PowerMapArray
Retrieve all power map entries as a named array, or an empty array if the collection is empty.
Example responses
200 Response
[
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Named PowerMaps array. | PowerMapArray_PowerMapArray |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /sysinfo/powermaps
Create or Modify PowerMaps
Create or update the given set of PowerMaps whose ID fields are each a valid xname. The poweredBy field is required.
Body parameter
[
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
]
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | PowerMapArray_PowerMapArray | true | none |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries created or updated. Message contains count of new/modified items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /sysinfo/powermaps
Delete all PowerMap entities
Delete all entries in the PowerMaps collection.
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - one or more entries deleted. Message contains count of deleted items. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist - Collection is empty | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /sysinfo/powermaps/{xname}
Retrieve PowerMap at {xname}
Retrieve PowerMap for a component located at physical location {xname}.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of PowerMap record to return. |
Example responses
200 Response
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | PowerMap entry matching xname/ID | PowerMap.1.0.0_PowerMap |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Does Not Exist | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /sysinfo/powermaps/{xname}
Delete PowerMap with ID {xname}
Delete PowerMap entry for a specific component {xname}.
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of PowerMap record to delete. |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - PowerMap is deleted. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | XName does Not Exist - no matching ID to delete | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/smd/hsm/v2/sysinfo/powermaps/{xname}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /sysinfo/powermaps/{xname}
Update definition for PowerMap ID {xname}
Update or create an entry for an individual component xname using PUT. If the PUT operation contains an xname that already exists, the entry will be overwritten with the new entry.
Body parameter
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
xname | path | string | true | Locational xname of PowerMap record to create or update. |
body | body | PowerMap.1.0.0_PowerMap | true | none |
Example responses
200 Response
{
"code": "string",
"message": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Zero (success) error code - PowerMap was created/updated. | Response_1.0.0 |
400 | Bad Request | Bad Request | Problem7807 |
default | Default | Unexpected error | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
This is the logical representation of a component for which state is tracked and includes other variables that may be needed by clients. It is keyed by the physical location i.e. xname.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
State | HMSState.1.0.0 | false | none | This property indicates the state of the underlying component. |
Flag | HMSFlag.1.0.0 | false | none | This property indicates the state flag of the underlying component. |
Enabled | boolean | false | none | Whether component is enabled. True when enabled, false when disabled. |
SoftwareStatus | string | false | none | SoftwareStatus of a node, used by the managed plane for running nodes. Will be missing for other component types or if not set by software. |
Role | HMSRole.1.0.0 | false | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
SubRole | HMSSubRole.1.0.0 | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
NID | integer | false | none | This is the integer Node ID if the component is a node. |
Subtype | string | false | read-only | Further distinguishes between components of same type. |
NetType | NetType.1.0.0 | false | none | This is the type of high speed network the component is connected to, if it is an applicable component type and the interface is present, or the type of the system HSN. |
Arch | HMSArch.1.0.0 | false | none | This is the basic architecture of the component so the proper software can be selected and so on. |
Class | HMSClass.1.0.0 | false | none | This is the HSM hardware class of the component. |
ReservationDisabled | boolean | false | read-only | Whether component can be reserved via the locking API. True when reservations are disabled, thus no new reservations can be created on this component. |
Locked | boolean | false | read-only | Whether a component is locked via the locking API. |
{
"ID": "x0c0s1b0n0",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River"
}
This is the logical representation of a component for which state is tracked and includes other variables that may be needed by clients. It is keyed by the physical location i.e. xname.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XNameRW.1.0.0 | true | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
State | HMSState.1.0.0 | true | none | This property indicates the state of the underlying component. |
Flag | HMSFlag.1.0.0 | false | none | This property indicates the state flag of the underlying component. |
Enabled | boolean | false | none | Whether component is enabled. True when enabled, false when disabled. |
SoftwareStatus | string | false | none | SoftwareStatus of a node, used by the managed plane for running nodes. Will be missing for other component types or if not set by software. |
Role | HMSRole.1.0.0 | false | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
SubRole | HMSSubRole.1.0.0 | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
NID | integer | false | none | This is the integer Node ID if the component is a node. |
Subtype | string | false | none | Further distinguishes between components of same type. |
NetType | NetType.1.0.0 | false | none | This is the type of high speed network the component is connected to, if it is an applicable component type and the interface is present, or the type of the system HSN. |
Arch | HMSArch.1.0.0 | false | none | This is the basic architecture of the component so the proper software can be selected and so on. |
Class | HMSClass.1.0.0 | false | none | This is the HSM hardware class of the component. |
{
"Component": {
"ID": "x0c0s1b0n0",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River"
},
"Force": true
}
This is the payload of a state components URI put operation on a component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Component | Component.1.0.0_ComponentCreate | true | none | This is the logical representation of a component for which state is tracked and includes other variables that may be needed by clients. It is keyed by the physical location i.e. xname. |
Force | boolean | false | none | If true, ‘force’ causes this operation to overwrite the ‘State’, ‘Flag’, ‘Subtype’, ‘NetType’, and ‘Arch’ fields for the specified component if it already exists. Otherwise, nothing will be overwritten. |
{
"State": "Ready",
"Flag": "OK",
"Force": false,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is the payload of a StateData URI patch operation on a component. Flag ID optional and will be reset to OK if no Flag value is given.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
State | HMSState.1.0.0 | true | none | This property indicates the state of the underlying component. |
Flag | HMSFlag.1.0.0 | false | none | This property indicates the state flag of the underlying component. |
Force | boolean | false | none | If the state change is normally prohibited, due to the current and new states, force the change anyways. Default is false. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"Flag": "OK",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is the payload of a FlagOnly patch operation on a component. Flag is required and the State field is unmodified regardless of the value given.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Flag | HMSFlag.1.0.0 | true | none | This property indicates the state flag of the underlying component. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"Enabled": true,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is the payload of a Enabled patch operation on a Component. Enabled is required, and is a boolean field with true representing enabled and false disabled.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Enabled | boolean | true | none | Component Enabled(true)/Disabled(false) flag |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"SoftwareStatus": "string",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is the payload of a SoftwareStatus patch operation on a Component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
SoftwareStatus | string | false | none | Component/node software status field, reserved for managed plane. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"Role": "Compute",
"SubRole": "Worker",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is the payload of a Role patch operation on a Component. Role is required, however operation will fail if Role is not a supported property of the corresponding HMS type.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Role | HMSRole.1.0.0 | true | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
SubRole | HMSSubRole.1.0.0 | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"NID": 0,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is the payload of a NID patch operation on a Component. NID is required but the operation will fail if NID is not a valid
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
NID | integer | true | none | This is the integer Node ID if the component is a node. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"NID": 0,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is one entry in a NID patch operation on an entire ComponentArray. ID and NID are required or the operation will fail. Only the NID field is updated, and then only if it is appropriate for the corresponding HMS type of the entry (e.g. node).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XNameForQuery.1.0.0 | true | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is identical to XName except that it is not read-only which would prevent it from being a required parameter in query operations in Swagger 2.0. These operations do not actually write the XName, merely using at a selector to do bulk writes of multiple records, so this is fine. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
NID | integer | true | none | This is the integer Node ID if the component is a node. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"Name": "(Type of Object) Collection",
"Members": [
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
],
"MemberCount": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Should describe the collection, though the type of resources the links correspond to should also be inferred from the context in which the collection was obtained. |
Members | [ResourceURI.1.0.0] | false | read-only | An array of ResourceIds. |
MemberCount | number(int32) | false | read-only | Number of ResourceURIs in the collection |
{
"Name": "(Type of Object) Collection",
"Members": [
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
],
"MemberCount": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Should describe the collection, though the type of resources the links correspond to should also be inferred from the context in which the collection was obtained. |
Members | [ResourceURI.1.0.0] | false | read-only | An array of ResourceIds. |
MemberCount | number(int32) | false | read-only | Number of ResourceURIs in the collection |
{
"Components": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River",
"ReservationDisabled": false,
"Locked": false
}
]
}
This is a collection of Component objects returned whenever a query is expected to result in 0 to n matches.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Components | [Component.1.0.0_Component] | false | none | Contains the HMS component objects in the array. |
{
"Components": [
{
"ID": "x0c0s1b0n0",
"State": "Ready",
"Flag": "OK",
"Enabled": true,
"SoftwareStatus": "string",
"Role": "Compute",
"SubRole": "Worker",
"NID": 1,
"Subtype": "string",
"NetType": "Sling",
"Arch": "X86",
"Class": "River"
}
],
"Force": true
}
This is a component post request. Contains the new component fields to apply.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Components | [Component.1.0.0_ComponentCreate] | true | none | Contains the HMS component objects in the array. |
Force | boolean | false | none | If true, ‘force’ causes this operation to overwrite the ‘State’, ‘Flag’, ‘Subtype’, ‘NetType’, and ‘Arch’ fields for the specified component if it already exists. Otherwise, nothing will be overwritten. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"State": "Ready",
"Flag": "OK",
"Force": false,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is a component state data patch request. Contains the new state to apply, new flag to apply (optional), and a list of component xnames for update. If the component flag is omitted, the flag will be reset to ‘ok’.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the components to update. |
State | HMSState.1.0.0 | true | none | This property indicates the state of the underlying component. |
Flag | HMSFlag.1.0.0 | false | none | This property indicates the state flag of the underlying component. |
Force | boolean | false | none | If the state change is normally prohibited, due to the current and new states, force the change anyways. Default is false. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Flag": "OK",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is a component flag value patch request. Contains the new flag to apply and a list of component xnames for update.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the components to update. |
Flag | HMSFlag.1.0.0 | true | none | This property indicates the state flag of the underlying component. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Enabled": true,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is a component Enabled field patch request. Contains the new value of enabled to apply and the list of component xnames to update.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the components to update. |
Enabled | boolean | true | none | Whether component is enabled. True when enabled, false when disabled. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"SoftwareStatus": "string",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is a component SoftwareStatus field patch request. Contains a new, single value of SoftwareStatus to apply, and the list of component xnames to update.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the components to update. |
SoftwareStatus | string | true | none | SoftwareStatus of the node, used by the managed plane for running nodes. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Role": "Compute",
"SubRole": "Worker",
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
This is a component Role value patch request. Contains the new Role to apply and a list of component xnames for update.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the components to update. |
Role | HMSRole.1.0.0 | true | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
SubRole | HMSSubRole.1.0.0 | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
ExtendedInfo | Message_1.0.0_ExtendedInfo | false | none | TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder. |
{
"Name": "string",
"Components": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"NID": 0,
"ExtendedInfo": {
"ID": "string",
"Message": "string",
"Flag": "OK"
}
}
]
}
This is a collection of Component objects with just the ID and NID fields populated.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Descriptive name e.g. why it was generated. |
Components | [Component.1.0.0_PatchArrayItem.NID] | false | none | Contains the component objects in the array but with just the Component ID and the patchable fields for a NID patch operation filled in. Other Component fields are not undated during these operations. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"partition": "p1",
"group": "group_label",
"stateonly": true,
"flagonly": true,
"roleonly": true,
"nidonly": true,
"type": [
"string"
],
"state": [
"string"
],
"flag": [
"string"
],
"enabled": [
"string"
],
"softwarestatus": [
"string"
],
"role": [
"string"
],
"subrole": [
"string"
],
"subtype": [
"string"
],
"arch": [
"string"
],
"class": [
"string"
],
"nid": [
"string"
],
"nid_start": [
"string"
],
"nid_end": [
"string"
]
}
There are limits to the length of an HTTP URL and query string. Hence, if we wish to query an arbitrary list of XName/IDs, it will need to be in the body of the request. This object is used for this purpose. It is similar to the analogous GET operation.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | false | none | An array of XName/ID values for the components to query. |
partition | string | false | none | Partition name to filter on, as per current /partitions/names |
group | string | false | none | Group label to filter on, as per current /groups/labels |
stateonly | boolean | false | none | Return only component state and flag fields (plus xname/ID and type). Results can be modified and used for bulk state/flag- only patch operations. |
flagonly | boolean | false | none | Return only component flag field (plus xname/ID and type). Results can be modified and used for bulk flag-only patch operations. |
roleonly | boolean | false | none | Return only component role and subrole fields (plus xname/ID and type). Results can be modified and used for bulk role-only patches. |
nidonly | boolean | false | none | Return only component NID field (plus xname/ID and type). Results can be modified and used for bulk NID-only patches. |
type | [string] | false | none | Retrieve all components with the given HMS type. |
state | [string] | false | none | Retrieve all components with the given HMS state. |
flag | [string] | false | none | Retrieve all components with the given HMS flag value. |
enabled | [string] | false | none | Retrieve all components with the given enabled status (true or false). |
softwarestatus | [string] | false | none | Retrieve all components with the given software status. Software status is a free form string. Matching is case-insensitive. |
role | [string] | false | none | Retrieve all components (i.e. nodes) with the given HMS role |
subrole | [string] | false | none | Retrieve all components (i.e. nodes) with the given HMS subrole |
subtype | [string] | false | none | Retrieve all components with the given HMS subtype. |
arch | [string] | false | none | Retrieve all components with the given architecture. |
class | [string] | false | none | Retrieve all components (i.e. nodes) with the given HMS hardware class. Class can be River, Mountain, etc. |
nid | [string] | false | none | Retrieve all components (i.e. one node) with the given integer NID |
nid_start | [string] | false | none | Retrieve all components (i.e. nodes) with NIDs equal to or greater than the provided integer. |
nid_end | [string] | false | none | Retrieve all components (i.e. nodes) with NIDs less than or equal to the provided integer. |
{
"NIDRanges": [
"0-24"
],
"partition": "p1.2",
"stateonly": true,
"flagonly": true,
"roleonly": true,
"nidonly": true
}
There are limits to the length of an HTTP URL and query string. Hence, if we wish to query an arbitrary list of NIDs, it will need to be in the body of the request. This object is used for this purpose. Parameters are similar to the analogous GET operation.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
NIDRanges | [NIDRange.1.0.0] | true | none | NID range values to query, producing a ComponentArray with the matching components, e.g. “0-24” or “2”. Add each multiple ranges as a separate array item. |
partition | XNamePartition.1.0.0 | false | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input. |
stateonly | boolean | false | none | Return only component state and flag fields (plus xname/ID and type). Results can be modified and used for bulk state/flag- only patch operations. |
flagonly | boolean | false | none | Return only component flag field (plus xname/ID and type). Results can be modified and used for bulk flag-only patch operations. |
roleonly | boolean | false | none | Return only component role and subrole fields (plus xname/ID and type). Results can be modified and used for bulk role-only patches. |
nidonly | boolean | false | none | Return only component NID field (plus xname/ID and type). Results can be modified and used for bulk NID-only patches. |
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
NodeMaps are a way of pre-populating state manager with a set of valid node xnames (currently populated, or just potentially populated) and assigning each a default NID (and optionally also a Role and SubRole). NID is required and must be unique within the NodeMaps. When components are first discovered, if a matching NodeMap entry is found, that NID will be used to create the component entry. This allows NIDs to be defined in advance in an orderly way that allows NID ranges to be consecutive on the set of xnames that is actually used for a particular hardware config. The default NIDs used if no NodeMap is present are based on enumerating NIDs for ALL POSSIBLE xnames, even though in practice only a small subset will be used for any particular hardware config (resulting in very sparse assignments). NodeMaps, then, help avoid this. Updating NodeMaps for already discovered components (unless they are deleted and then rediscovered) will not automatically update the NID field in States/Components. Likewise using a patch to update NID on a particular entry in States/Components will not automatically define or update a NodeMap entry.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
NID | integer | true | none | Positive default Node ID (NID) for the xname in ID |
Role | HMSRole.1.0.0 | false | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
SubRole | HMSSubRole.1.0.0 | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
NodeMaps are a way of pre-populating state manager with a set of valid node xnames (currently populated, or just potentially populated) and assigning each a default NID (and optionally also a Role and SubRole). NID is required and must be unique within the NodeMaps. When components are first discovered, if a matching NodeMap entry is found, that NID will be used to create the component entry. This allows NIDs to be defined in advance in an orderly way that allows NID ranges to be consecutive on the set of xnames that is actually used for a particular hardware config. The default NIDs used if no NodeMap is present are based on enumerating NIDs for ALL POSSIBLE xnames, even though in practice only a small subset will be used for any particular hardware config (resulting in very sparse assignments). NodeMaps, then, help avoid this. Updating NodeMaps for already discovered components (unless they are deleted and then rediscovered) will not automatically update the NID field in States/Components. Likewise using a patch to update NID on a particular entry in States/Components will not automatically define or update a NodeMap entry.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XNameForQuery.1.0.0 | true | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is identical to XName except that it is not read-only which would prevent it from being a required parameter in query operations in Swagger 2.0. These operations do not actually write the XName, merely using at a selector to do bulk writes of multiple records, so this is fine. |
NID | integer | true | none | Positive default Node ID (NID) for the xname in ID |
Role | HMSRole.1.0.0 | false | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
SubRole | HMSSubRole.1.0.0 | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
{
"NodeMaps": [
{
"ID": "x0c0s0b0n0",
"NID": 1,
"Role": "Compute",
"SubRole": "Worker"
}
]
}
This is a named array of NodeMap objects. This is the result of GET-ing the NodeMaps collection, or can be used to populate or update it as input provided via POST.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
NodeMaps | [NodeMap.1.0.0_PostNodeMap] | false | none | Contains the NodeMap objects in the array. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1"
}
This describes a child component of a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by services that need to interact directly with the component via Redfish. It represents a physical component of something and has a corresponding representation as an HMS Component, hence the name. There are also ServiceEndpoints which represent Redfish services that are discovered when the RedfishEndpoint is discovered. NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery). Additional info is appended depending on RedfishType (discriminator)
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
Domain | string | false | none | Domain of component FQDN. Hostname is always ID/xname |
FQDN | string | false | none | Fully-qualified domain name of component on management network if for example the component is a node. |
RedfishType | RedfishType.1.0.0 | false | none | This is the Redfish object type, not to be confused with the HMS component type. |
RedfishSubtype | RedfishSubtype.1.0.0 | false | none | This is the type corresponding to the Redfish object type, i.e. the ChassisType field, SystemType, ManagerType fields. We only use these three types to create ComponentEndpoints for now. |
Enabled | boolean | false | none | To disable a component without deleting its data from the database, can be set to false |
ComponentEndpointType | string | true | none | This is used as a discriminator to determine the additional RF-type- specific data that is kept for a ComponentEndpoint. |
MACAddr | string | false | none | If the component e.g. a ComputerSystem/Node has a MAC on the management network, i.e. corresponding to the FQDN field’s Ethernet interface, this field will be present. Not the HSN MAC. Represented as the standard colon-separated 6 byte hex string. |
UUID | UUID.1.0.0 | false | none | This is a universally unique identifier i.e. UUID in the canonical format provided by Redfish to identify endpoints and services. If this is the UUID of a RedfishEndpoint, it should be the UUID broadcast by SSDP, if applicable. |
OdataID | OdataID.1.0.0 | false | none | This is the path (relative to a Redfish endpoint) of a particular Redfish resource, e.g. /Redfish/v1/Systems/System.Embedded.1 |
RedfishEndpointID | XNameRFEndpoint.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). This is identical to a normal XName, but specifies a case where a BMC or other controller type is expected. |
RedfishEndpointFQDN | string | false | read-only | This is a back-reference to the fully-qualified domain name of the parent Redfish endpoint that was used to discover the component. It is the RedfishEndpointID field i.e. the hostname/xname plus its current domain. |
RedfishURL | string | false | read-only | Complete URL to the corresponding Redfish object, combining the RedfishEndpoint’s FQDN and the OdataID. |
Property | Value |
---|---|
ComponentEndpointType | ComponentEndpointChassis |
ComponentEndpointType | ComponentEndpointComputerSystem |
ComponentEndpointType | ComponentEndpointManager |
ComponentEndpointType | ComponentEndpointPowerDistribution |
ComponentEndpointType | ComponentEndpointOutlet |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishChassisInfo": {
"Name": "string",
"Actions": {
"#Chassis.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff"
],
"target": "/redfish/v1/Chassis/RackEnclosure/Actions/Chassis.Reset"
}
}
}
}
This is a subtype of ComponentEndpoint for Chassis RF components, i.e. of most HMS components other than nodes and BMCs. This subtype is used when the ComponentEndpoint’s ComponentEndpointType is ‘ComponentEndpointChassis’ via the ‘discriminator: ComponentEndpointType’ property.
allOf - discriminator: ComponentEndpoint.1.0.0_ComponentEndpoint.ComponentEndpointType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | ComponentEndpoint.1.0.0_ComponentEndpoint | false | none | This describes a child component of a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by services that need to interact directly with the component via Redfish. It represents a physical component of something and has a corresponding representation as an HMS Component, hence the name. There are also ServiceEndpoints which represent Redfish services that are discovered when the RedfishEndpoint is discovered. NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery). Additional info is appended depending on RedfishType (discriminator) |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RedfishChassisInfo | ComponentEndpoint.1.0.0_RedfishChassisInfo | false | none | This is the ChassisInfo field in the RF Chassis subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is Chassis. This is where new fields will be added. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishSystemInfo": {
"Name": "string",
"Actions": {
"#ComputerSystem.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff",
"ForceRestart"
],
"target": "/redfish/v1/Systems/System.1/Actions/ComputerSystem.Reset"
}
},
"EthernetNICInfo": [
{
"RedfishId": 1,
"@odata.id": "/redfish/v1/{Chassis/Managers/Systems}/{Id}/EthernetInterfaces/1",
"Description": "Integrated NIC 1",
"FQDN": "string",
"Hostname": "string",
"InterfaceEnabled": true,
"MACAddress": "ae:12:ce:7a:aa:99",
"PermanentMACAddress": "ae:12:ce:7a:aa:99"
}
],
"PowerURL": "/redfish/v1/Chassis/Node0/Power",
"PowerControl": [
{
"Name": "Node Power Control",
"PowerCapacityWatts": 900,
"OEM": {
"Cray": {
"PowerIdleWatts": 900,
"PowerLimit": {
"Min": 350,
"Max": 850
},
"PowerResetWatts": 250
}
},
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/Node0/Power#/PowerControl/Accelerator0"
}
]
}
]
}
}
This is a subtype of ComponentEndpoint for ComputerSystem RF components, i.e. a node HMS type. This subtype is used when the ComponentEndpoint’s ComponentEndpointType is ‘ComponentEndpointComputerSystem’ via the ‘discriminator: ComponentEndpointType’ property.
allOf - discriminator: ComponentEndpoint.1.0.0_ComponentEndpoint.ComponentEndpointType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | ComponentEndpoint.1.0.0_ComponentEndpoint | false | none | This describes a child component of a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by services that need to interact directly with the component via Redfish. It represents a physical component of something and has a corresponding representation as an HMS Component, hence the name. There are also ServiceEndpoints which represent Redfish services that are discovered when the RedfishEndpoint is discovered. NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery). Additional info is appended depending on RedfishType (discriminator) |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RedfishSystemInfo | ComponentEndpoint.1.0.0_RedfishSystemInfo | false | none | This is the SystemInfo object in the RF ComputerSystem subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is ComputerSystem. It contains HMS-Node/ComputerSystem-specific Redfish fields that need to be collected during discovery and made available to clients. This is where new fields will be added. Mostly placeholder now. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishManagerInfo": {
"Name": "string",
"Actions": {
"#Manager.Reset": {
"ResetType@Redfish.AllowableValues": [
"ForceRestart"
],
"target": "/redfish/v1/Managers/BMC/Actions/Manager.Reset"
}
},
"EthernetNICInfo": [
{
"RedfishId": 1,
"@odata.id": "/redfish/v1/{Chassis/Managers/Systems}/{Id}/EthernetInterfaces/1",
"Description": "Integrated NIC 1",
"FQDN": "string",
"Hostname": "string",
"InterfaceEnabled": true,
"MACAddress": "ae:12:ce:7a:aa:99",
"PermanentMACAddress": "ae:12:ce:7a:aa:99"
}
]
}
}
This is a subtype of ComponentEndpoint for Manager RF components, i.e. any BMC type. For example NodeBMC is a Manager, NodeEnclosure is a Chassis RF type. This subtype is used when the ComponentEndpoint’s ComponentEndpointType is ‘ComponentEndpointManager’ via the ‘discriminator: ComponentEndpointType’ property.
allOf - discriminator: ComponentEndpoint.1.0.0_ComponentEndpoint.ComponentEndpointType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | ComponentEndpoint.1.0.0_ComponentEndpoint | false | none | This describes a child component of a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by services that need to interact directly with the component via Redfish. It represents a physical component of something and has a corresponding representation as an HMS Component, hence the name. There are also ServiceEndpoints which represent Redfish services that are discovered when the RedfishEndpoint is discovered. NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery). Additional info is appended depending on RedfishType (discriminator) |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RedfishManagerInfo | ComponentEndpoint.1.0.0_RedfishManagerInfo | false | none | This is the ManagerInfo object in the RF Manager subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is Manager. It contains BMC/Manager-specific Redfish fields that need to be collected during discovery and made available to clients. This is where new fields will be added. Mostly placeholder now. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishChassisInfo": {
"Name": "string"
}
}
This is a subtype of ComponentEndpoint for PowerDistribution RF components. This subtype is used when the ComponentEndpoints ComponentEndpointType is ComponentEndpointPowerDistribution via the discriminator: ComponentEndpointType property.
allOf - discriminator: ComponentEndpoint.1.0.0_ComponentEndpoint.ComponentEndpointType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | ComponentEndpoint.1.0.0_ComponentEndpoint | false | none | This describes a child component of a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by services that need to interact directly with the component via Redfish. It represents a physical component of something and has a corresponding representation as an HMS Component, hence the name. There are also ServiceEndpoints which represent Redfish services that are discovered when the RedfishEndpoint is discovered. NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery). Additional info is appended depending on RedfishType (discriminator) |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RedfishChassisInfo | ComponentEndpoint.1.0.0_RedfishPowerDistributionInfo | false | none | This is the RedfishPDUInfo field in the RF Chassis subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is PowerDistribution. This is where new fields will be added. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1",
"RedfishChassisInfo": {
"Name": "string",
"Actions": {
"#Outlet.PowerControl": {
"PowerControl@Redfish.AllowableValues": [
"On"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.PowerControl"
},
"#Outlet.ResetBreaker": {
"ResetBreaker@Redfish.AllowableValues": [
"Off"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.ResetBreaker"
},
"#Outlet.ResetStatistics": {
"ResetStatistics@Redfish.AllowableValues": [
"string"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.ResetStatistics"
}
}
}
}
This is a subtype of ComponentEndpoint for PowerDistribution Outlet RF components. This subtype is used when the ComponentEndpoints ComponentEndpointType is ComponentEndpointOutlet via the discriminator: ComponentEndpointType property.
allOf - discriminator: ComponentEndpoint.1.0.0_ComponentEndpoint.ComponentEndpointType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | ComponentEndpoint.1.0.0_ComponentEndpoint | false | none | This describes a child component of a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by services that need to interact directly with the component via Redfish. It represents a physical component of something and has a corresponding representation as an HMS Component, hence the name. There are also ServiceEndpoints which represent Redfish services that are discovered when the RedfishEndpoint is discovered. NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery). Additional info is appended depending on RedfishType (discriminator) |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RedfishChassisInfo | ComponentEndpoint.1.0.0_RedfishOutletInfo | false | none | This is the RedfishOutletInfo field in the RF Outlet subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is Outlet. This is where new fields will be added. |
{
"Name": "string",
"Actions": {
"#Chassis.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff"
],
"target": "/redfish/v1/Chassis/RackEnclosure/Actions/Chassis.Reset"
}
}
}
This is the ChassisInfo field in the RF Chassis subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is Chassis. This is where new fields will be added.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | The Redfish ‘Name’ of the Chassis. |
Actions | Actions_1.0.0_ChassisActions | false | none | This is a pass-through field from Redfish that lists the available actions for a Chassis component (if any were found, else if it be omitted entirely). |
{
"Name": "string",
"Actions": {
"#ComputerSystem.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff",
"ForceRestart"
],
"target": "/redfish/v1/Systems/System.1/Actions/ComputerSystem.Reset"
}
},
"EthernetNICInfo": [
{
"RedfishId": 1,
"@odata.id": "/redfish/v1/{Chassis/Managers/Systems}/{Id}/EthernetInterfaces/1",
"Description": "Integrated NIC 1",
"FQDN": "string",
"Hostname": "string",
"InterfaceEnabled": true,
"MACAddress": "ae:12:ce:7a:aa:99",
"PermanentMACAddress": "ae:12:ce:7a:aa:99"
}
],
"PowerURL": "/redfish/v1/Chassis/Node0/Power",
"PowerControl": [
{
"Name": "Node Power Control",
"PowerCapacityWatts": 900,
"OEM": {
"Cray": {
"PowerIdleWatts": 900,
"PowerLimit": {
"Min": 350,
"Max": 850
},
"PowerResetWatts": 250
}
},
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/Node0/Power#/PowerControl/Accelerator0"
}
]
}
]
}
This is the SystemInfo object in the RF ComputerSystem subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is ComputerSystem. It contains HMS-Node/ComputerSystem-specific Redfish fields that need to be collected during discovery and made available to clients. This is where new fields will be added. Mostly placeholder now.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | The Redfish ’name’ of the ComputerSystem. |
Actions | Actions_1.0.0_ComputerSystemActions | false | none | This is a pass-through field from Redfish that lists the available actions for a System component (if any were found, else if it be omitted entirely). |
EthernetNICInfo | [EthernetNICInfo_1.0.0] | false | none | [This is a summary info for one ordinary Ethernet NIC (i.e. not on HSN). These fields are all passed through from a Redfish EthernetInterface object.] |
PowerURL | string | false | read-only | The URL for the power info for this node. |
PowerControl | [PowerControl_1.0.0] | false | none | [This is the power control info for the node. These fields are all passed through from a Redfish PowerControl object.] |
{
"Name": "string",
"Actions": {
"#Manager.Reset": {
"ResetType@Redfish.AllowableValues": [
"ForceRestart"
],
"target": "/redfish/v1/Managers/BMC/Actions/Manager.Reset"
}
},
"EthernetNICInfo": [
{
"RedfishId": 1,
"@odata.id": "/redfish/v1/{Chassis/Managers/Systems}/{Id}/EthernetInterfaces/1",
"Description": "Integrated NIC 1",
"FQDN": "string",
"Hostname": "string",
"InterfaceEnabled": true,
"MACAddress": "ae:12:ce:7a:aa:99",
"PermanentMACAddress": "ae:12:ce:7a:aa:99"
}
]
}
This is the ManagerInfo object in the RF Manager subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is Manager. It contains BMC/Manager-specific Redfish fields that need to be collected during discovery and made available to clients. This is where new fields will be added. Mostly placeholder now.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | The Redfish ‘Name’ of the Manager. |
Actions | Actions_1.0.0_ManagerActions | false | none | This is a pass-through field from Redfish that lists the available actions for a Manager component (if any were found, else if it be omitted entirely). |
EthernetNICInfo | [EthernetNICInfo_1.0.0] | false | none | [This is a summary info for one ordinary Ethernet NIC (i.e. not on HSN). These fields are all passed through from a Redfish EthernetInterface object.] |
{
"Name": "string"
}
This is the RedfishPDUInfo field in the RF Chassis subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is PowerDistribution. This is where new fields will be added.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | The Redfish Name of the PDU. |
{
"Name": "string",
"Actions": {
"#Outlet.PowerControl": {
"PowerControl@Redfish.AllowableValues": [
"On"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.PowerControl"
},
"#Outlet.ResetBreaker": {
"ResetBreaker@Redfish.AllowableValues": [
"Off"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.ResetBreaker"
},
"#Outlet.ResetStatistics": {
"ResetStatistics@Redfish.AllowableValues": [
"string"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.ResetStatistics"
}
}
}
This is the RedfishOutletInfo field in the RF Outlet subtype of ComponentEndpoint, i.e. when the latter’s RedfishType is Outlet. This is where new fields will be added.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | The Redfish Name of the Outlet. |
Actions | Actions_1.0.0_OutletActions | false | none | This is a pass-through field from Redfish that lists the available actions for a Outlet component (if any were found, else if it be omitted entirely). |
{
"Name": "(Type of Object) Collection",
"Members": [
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
],
"MemberCount": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Should describe the collection, though the type of resources the links correspond to should also be inferred from the context in which the collection was obtained. |
Members | [ResourceURI.1.0.0] | false | read-only | An array of ResourceIds. |
MemberCount | number(int32) | false | read-only | Number of ResourceURIs in the collection |
{
"ComponentEndpoints": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Domain": "mgmt.example.domain.com",
"FQDN": "x0c0s0b0n0.mgmt.example.domain.com",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"Enabled": true,
"ComponentEndpointType": "ComponentEndpointComputerSystem",
"MACAddr": "ae:12:ce:7a:aa:99",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointID": "x0c0s0b0",
"RedfishEndpointFQDN": "x0c0s0b0.mgmt.example.domain.com",
"RedfishURL": "x0c0s0b0.mgmt.example.domain.com/redfish/v1/Systems/System.Embedded.1"
}
]
}
This is a collection of ComponentEndpoint objects returned whenever a query is expected to result in 0 to n matches.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentEndpoints | [ComponentEndpoint.1.0.0_ComponentEndpoint] | false | none | Contains the HMS RedfishEndpoint objects in the array. |
{
"ComponentEndpointIDs": [
"x0c0s0b0n0"
],
"partition": "p1.2"
}
There are limits to the length of an HTTP URL and query string. Hence, if we wish to query an arbitrary list of XName/IDs, it will need to be in the body of the request. This object is used for this purpose. It is similar to the analogous GET operation.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentEndpointIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the ComponentEndpoints to query. |
partition | XNamePartition.1.0.0 | false | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input. |
{
"HSNTopology": 0,
"HSNNetworkType": "Sling",
"HSNInfoEntries": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"NICAddrs": [
2313746,
11484946
],
"HSNCoords": [
0,
0,
0,
0,
0
]
}
]
}
Component to NIC and Network Coordinate Map
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
HSNTopology | HSNTopology.1.0.0 | false | none | Numerical identifier for HSN topology class |
HSNNetworkType | NetType.1.0.0 | false | none | This is the type of high speed network the component is connected to, if it is an applicable component type and the interface is present, or the type of the system HSN. |
HSNInfoEntries | [HSNInfoEntry.1.0.0] | false | none | Contains an HSN info entry for each component. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"NICAddrs": [
2313746,
11484946
],
"HSNCoords": [
0,
0,
0,
0,
0
]
}
The HSN info for an individual component, e.g. node.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
NICAddrs | NICAddrs.1.0.0 | false | none | A collection of HSN NIC addresses in string form. |
HSNCoords | [integer] | false | none | HSN Coordinates of the components, an integer tuple of a particular length in array form. |
0
Numerical identifier for HSN topology class
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | integer(int32) | false | none | Numerical identifier for HSN topology class |
{
"XName": "x0c0s0b0n0",
"Format": "NestNodesOnly",
"Cabinets": [
{
"ID": "x0",
"Type": "Cabinet",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocCabinet",
"CabinetLocationInfo": {
"Id": "Cabinet",
"Name": "Name describing cabinet or where it is located, per manufacturing",
"Description": "Description of cabinet, per manufacturing",
"Hostname": "if_defined_in_Redfish"
},
"PopulatedFRU": {
"FRUID": "Cray-2345-1234556789",
"Type": "Cabinet",
"Subtype": "MountainCabinet (example)",
"HWInventoryByFRUType": "HWInvByFRUCabinet",
"CabinetFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"Model": 123,
"Manufacturer": "Cray",
"PartNumber": "p2345",
"SerialNumber": "sn1234556789",
"SKU": "as213234",
"ChassisType": "Rack"
}
}
}
],
"Chassis": [
{
"ID": "x0c0",
"Type": "Chassis",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocChassis",
"ChassisLocationInfo": {
"Id": "Chassis.1",
"Name": "Name describing component or its location, per manufacturing",
"Description": "Description, per manufacturing",
"Hostname": "if_defined_in_Redfish"
},
"PopulatedFRU": {
"FRUID": "Cray-ch01-23452345",
"Type": "Chassis",
"Subtype": "MountainChassis (example)",
"HWInventoryByFRUType": "HWInvByFRUChassis",
"ChassisFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"Model": 3245,
"Manufacturer": "Cray",
"PartNumber": "ch01",
"SerialNumber": "sn23452345",
"SKU": "as213234",
"ChassisType": "Enclosure"
}
}
}
],
"ComputeModules": [
{
"ComputeModuleLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
},
"NodeEnclosures": [
{
"NodeEnclosureLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
]
}
],
"RouterModules": [
{
"RouterModuleLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
},
"HSNBoards": [
{
"HSNBoardLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
]
}
],
"NodeEnclosures": [
{
"NodeEnclosureLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"HSNBoards": [
{
"HSNBoardLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"MgmtSwitches": [
{
"MgmtSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"MgmtHLSwitches": [
{
"MgmtHLSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"CDUMgmtSwitches": [
{
"CDUMgmtSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
],
"Nodes": [
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocNode",
"NodeLocationInfo": {
"Id": "System.Embedded.1",
"Name": "Name describing system or where it is located, per manufacturing",
"Description": "Description of system/node type, per manufacturing",
"Hostname": "if_defined_in_Redfish",
"ProcessorSummary": {
"Count": 2,
"Model": "Multi-Core Intel(R) Xeon(R) processor E5-16xx Series"
},
"MemorySummary": {
"TotalSystemMemoryGiB": 64
}
},
"PopulatedFRU": {
"FRUID": "Dell-99999-1234.1234.2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "p99999",
"SerialNumber": "1234.1234.2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
},
"Processors": [
{
"ID": "x0c0s0b0n0p0",
"Type": "Processor",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU1",
"Name": "Processor",
"Description": "Socket 1 Processor",
"Socket": "CPU 1"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
},
{
"ID": "x0c0s0b0n0p1",
"Type": "Processor",
"Ordinal": 1,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU2",
"Name": "Processor",
"Description": "Socket 2 Processor",
"Socket": "CPU 2"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
}
],
"Memory": [
{
"ID": "x0c0s0b0n0d0",
"Type": "Memory",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM1",
"Name": "DIMM Slot 1",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "sn12344567689"
}
}
},
{
"ID": "x0c0s0b0n0d1",
"Type": "Memory",
"Ordinal": 1,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM2",
"Name": "Socket 1 DIMM Slot 2",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
},
{
"ID": "x0c0s0b0n0d2",
"Type": "Memory",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 1",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER_2",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "k346456346346"
}
}
},
{
"ID": "x0c0s0b0n0d3",
"Type": "Memory",
"Ordinal": 3,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 2",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
}
]
}
],
"Processors": [
{
"description": "By default, listed as subcomponent of Node, see example there."
}
],
"NodeAccels": [
{
"description": "By default, listed as subcomponent of Node."
}
],
"Drives": [
{
"description": "By default, listed as subcomponent of Node, see example there."
}
],
"Memory": [
{
"description": "By default, listed as subcomponent of Node, see example there."
}
],
"CabinetPDUs": [
{
"ID": "x0m0p0",
"Type": "CabinetPDU",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocPDU",
"PDULocationInfo": {
"Id": "1",
"Name": "RackPDU1",
"Description": "Description of PDU, per manufacturing",
"UUID": "32354641-4135-4332-4a35-313735303734"
},
"PopulatedFRU": {
"FRUID": "CabinetPDU.29347ZT536",
"Type": "CabinetPDU",
"HWInventoryByFRUType": "HWInvByFRUPDU",
"PDUFRUInfo": {
"FirmwareVersion": "4.3.0",
"EquipmentType": "RackPDU",
"Manufacturer": "Contoso",
"CircuitSummary": {
"TotalPhases": 3,
"TotalBranches": 4,
"TotalOutlets": 16,
"MonitoredPhases": 3,
"ControlledOutlets": 8,
"MonitoredBranches": 4,
"MonitoredOutlets": 12
},
"AssetTag": "PDX-92381",
"DateOfManufacture": "2017-01-11T08:00:00Z",
"HardwareRevision": "1.03b",
"Model": "ZAP4000",
"SerialNumber": "29347ZT536",
"PartNumber": "AA-23"
}
},
"CabinetPDUPowerConnectors": [
{
"ID": "x0m0p0v1",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A1",
"Name": "Outlet A1, Branch Circuit A",
"Description": "Outlet description"
},
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.0.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
},
{
"ID": "x0m0p0v2",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A2",
"Name": "Outlet A2, Branch Circuit A",
"Description": "Outlet description"
},
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.1.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
}
]
}
],
"CabinetPDUPowerConnectors": [
{
"description": "By default, listed as subcomponent of PDU, see example there."
}
],
"CMMRectifiers": [
{
"CMMRectifierLocationInfo": {
"Name": "string",
"FirmwareVersion": "string"
}
}
],
"NodeAccelRisers": [
{
"NodeAccelRiserLocationInfo": {
"Name": "string",
"Description": "string"
}
}
],
"NodeHsnNICs": [
{
"HSNNICLocationInfo": {
"Description": "string",
"Id": "string",
"Name": "string"
}
}
],
"NodeEnclosurePowerSupplies": [
{
"NodeEnclosurePowerSupplyLocationInfo": {
"Name": "string",
"FirmwareVersion": "string"
}
}
],
"NodeBMC": [
{
"NodeBMCLocationInfo": {
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
}
],
"RouterBMC": [
{
"RouterBMCLocationInfo": {
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
}
]
}
This is a collection of hardware inventory data. Depending on the query only some of these arrays will be populated. Also, depending on the query that produced the inventory, some components may have their subcomponents nested underneath them (hierarchical query), rather than all arranged in their own arrays by their types (flat query). The default is hierarchical for node subcomponents (Processors, Memory) and flat for everything else, but other query types are possible and can use this same basic structure. Either way, the ‘Target’ field is the parent component, partition or system that is used to select the components for the query.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
XName | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
Format | string | false | none | How results are displayed FullyFlat All component types listed in their own arrays only. No nesting of any children Hierarchical All subcomponents listed as children up to top level component (or set of cabinets) NestNodesOnly Flat except that node subcomponents are nested hierarchically. Default is NestNodesOnly. |
Cabinets | [HWInvByLocCabinet] | false | read-only | All components with HMS type ‘Cabinet’ appropriate given Target component/partition and query type. |
Chassis | [HWInvByLocChassis] | false | read-only | All appropriate components with HMS type ‘Chassis’ given Target component/partition and query type. |
ComputeModules | [HWInvByLocComputeModule] | false | read-only | All appropriate components with HMS type ‘ComputeModule’ given Target component/partition and query type. |
RouterModules | [HWInvByLocRouterModule] | false | read-only | All appropriate components with HMS type ‘RouterModule’ given Target component/partition and query type. |
NodeEnclosures | [HWInvByLocNodeEnclosure] | false | read-only | All appropriate components with HMS type ‘NodeEnclosure’ given Target component/partition and query type. |
HSNBoards | [HWInvByLocHSNBoard] | false | read-only | All appropriate components with HMS type ‘HSNBoard’ given Target component/partition and query type. |
MgmtSwitches | [HWInvByLocMgmtSwitch] | false | read-only | All appropriate components with HMS type ‘MgmtSwitch’ given Target component/partition and query type. |
MgmtHLSwitches | [HWInvByLocMgmtHLSwitch] | false | read-only | All appropriate components with HMS type ‘MgmtHLSwitch’ given Target component/partition and query type. |
CDUMgmtSwitches | [HWInvByLocCDUMgmtSwitch] | false | read-only | All appropriate components with HMS type ‘CDUMgmtSwitch’ given Target component/partition and query type. |
Nodes | [HWInvByLocNode] | false | read-only | All appropriate components with HMS type ‘Node’ given Target component/partition and query type. |
Processors | [HWInvByLocProcessor] | false | read-only | All appropriate components with HMS type ‘Processor’ given Target component/partition and query type. |
NodeAccels | [HWInvByLocNodeAccel] | false | read-only | All appropriate components with HMS type ‘NodeAccel’ given Target component/partition and query type. |
Drives | [HWInvByLocDrive] | false | read-only | All appropriate components with HMS type ‘Drive’ given Target component/partition and query type. |
Memory | [HWInvByLocMemory] | false | read-only | All appropriate components with HMS type ‘Memory’ given Target component/partition and query type. |
CabinetPDUs | [HWInvByLocPDU] | false | read-only | All appropriate components with HMS type ‘CabinetPDU’ given Target component/partition and query type. |
CabinetPDUPowerConnectors | [HWInvByLocOutlet] | false | read-only | All appropriate components with HMS type ‘CabinetPDUPowerConnector’ given Target component/partition and query type. |
CMMRectifiers | [HWInvByLocCMMRectifier] | false | read-only | All appropriate components with HMS type ‘CMMRectifier’ given Target component/partition and query type. |
NodeAccelRisers | [HWInvByLocNodeAccelRiser] | false | read-only | All appropriate components with HMS type ‘NodeAccelRiser’ given Target component/partition and query type. |
NodeHsnNICs | [HWInvByLocHSNNIC] | false | read-only | All appropriate components with HMS type ‘NodeHsnNic’ given Target component/partition and query type. |
NodeEnclosurePowerSupplies | [HWInvByLocNodeEnclosurePowerSupply] | false | read-only | All appropriate components with HMS type ‘NodeEnclosurePowerSupply’ given Target component/partition and query type. |
NodeBMC | [HWInvByLocNodeBMC] | false | read-only | All appropriate components with HMS type ‘NodeBMC’ given Target component/partition and query type. |
RouterBMC | [HWInvByLocRouterBMC] | false | read-only | All appropriate components with HMS type ‘RouterBMC’ given Target component/partition and query type. |
Property | Value |
---|---|
Format | FullyFlat |
Format | Hierarchical |
Format | NestNodesOnly |
null
This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XNameCompOrPartition.1.0.0 | true | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input, or else a parent component. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
Ordinal | integer(int32) | false | read-only | This is the normalized (from zero) index of the component location (e.g. slot number) when there are more than one. This should match the last number in the xname in most cases (e.g. Ordinal 0 for node x0c0s0b0n0). Note that Redfish may use a different value or naming scheme, but this is passed through via the *LocationInfo for the type of component. |
Status | string | false | read-only | Populated or Empty - whether location is populated. |
HWInventoryByLocationType | string | true | none | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
PopulatedFRU | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
Property | Value |
---|---|
Status | Populated |
Status | Empty |
HWInventoryByLocationType | HWInvByLocCabinet |
HWInventoryByLocationType | HWInvByLocChassis |
HWInventoryByLocationType | HWInvByLocComputeModule |
HWInventoryByLocationType | HWInvByLocRouterModule |
HWInventoryByLocationType | HWInvByLocNodeEnclosure |
HWInventoryByLocationType | HWInvByLocHSNBoard |
HWInventoryByLocationType | HWInvByLocMgmtSwitch |
HWInventoryByLocationType | HWInvByLocMgmtHLSwitch |
HWInventoryByLocationType | HWInvByLocCDUMgmtSwitch |
HWInventoryByLocationType | HWInvByLocNode |
HWInventoryByLocationType | HWInvByLocProcessor |
HWInventoryByLocationType | HWInvByLocNodeAccel |
HWInventoryByLocationType | HWInvByLocNodeAccelRiser |
HWInventoryByLocationType | HWInvByLocDrive |
HWInventoryByLocationType | HWInvByLocMemory |
HWInventoryByLocationType | HWInvByLocPDU |
HWInventoryByLocationType | HWInvByLocOutlet |
HWInventoryByLocationType | HWInvByLocCMMRectifier |
HWInventoryByLocationType | HWInvByLocNodeEnclosurePowerSupply |
HWInventoryByLocationType | HWInvByLocNodeBMC |
HWInventoryByLocationType | HWInvByLocRouterBMC |
HWInventoryByLocationType | HWInvByLocHSNNIC |
{
"ID": "x0",
"Type": "Cabinet",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocCabinet",
"CabinetLocationInfo": {
"Id": "Cabinet",
"Name": "Name describing cabinet or where it is located, per manufacturing",
"Description": "Description of cabinet, per manufacturing",
"Hostname": "if_defined_in_Redfish"
},
"PopulatedFRU": {
"FRUID": "Cray-2345-1234556789",
"Type": "Cabinet",
"Subtype": "MountainCabinet (example)",
"HWInventoryByFRUType": "HWInvByFRUCabinet",
"CabinetFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"Model": 123,
"Manufacturer": "Cray",
"PartNumber": "p2345",
"SerialNumber": "sn1234556789",
"SKU": "as213234",
"ChassisType": "Rack"
}
}
}
This is a subtype of HWInventoryByLocation for HMSType Cabinet. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocCabinet’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» CabinetLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
» Chassis | [HWInvByLocChassis] | false | read-only | Embedded chassis HWInv object array representing subcomponents (if query is hierarchical). |
{
"ID": "x0c0",
"Type": "Chassis",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocChassis",
"ChassisLocationInfo": {
"Id": "Chassis.1",
"Name": "Name describing component or its location, per manufacturing",
"Description": "Description, per manufacturing",
"Hostname": "if_defined_in_Redfish"
},
"PopulatedFRU": {
"FRUID": "Cray-ch01-23452345",
"Type": "Chassis",
"Subtype": "MountainChassis (example)",
"HWInventoryByFRUType": "HWInvByFRUChassis",
"ChassisFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"Model": 3245,
"Manufacturer": "Cray",
"PartNumber": "ch01",
"SerialNumber": "sn23452345",
"SKU": "as213234",
"ChassisType": "Enclosure"
}
}
}
This is a subtype of HWInventoryByLocation for HMSType Chassis. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocChassis’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» ChassisLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
» ComputeModules | [HWInvByLocComputeModule] | false | read-only | Embedded ComputeModule HWInv object array representing subcomponents of that type (if query is hierarchical). |
» RouterModules | [HWInvByLocRouterModule] | false | read-only | Embedded RouterModule HWInv object array representing subcomponents of that type (if query is hierarchical). |
{
"ComputeModuleLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
},
"NodeEnclosures": [
{
"NodeEnclosureLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
]
}
This is a subtype of HWInventoryByLocation for HMSType ComputeModule. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocComputeModule’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» ComputeModuleLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
» NodeEnclosures | [HWInvByLocNodeEnclosure] | false | read-only | Embedded NodeEnclosure HWInv object array representing subcomponents of that type (if query is hierarchical). |
{
"RouterModuleLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
},
"HSNBoards": [
{
"HSNBoardLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
]
}
This is a subtype of HWInventoryByLocation for HMSType RouterModule. This is a Mountain switch module. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocRouterModule’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RouterModuleLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
» HSNBoards | [HWInvByLocHSNBoard] | false | read-only | Embedded HSNBoard HWInv object array representing subcomponents of that type (if query is hierarchical). |
{
"NodeEnclosureLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType NodeEnclosure. It represents a Mountain node card or River rack enclosure. It is NOT the BMC, which is separate and corresponds to a Redfish Manager. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocNodeEnclosure’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeEnclosureLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"HSNBoardLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType HSNBoard. It represents a Mountain switch card or River TOR enclosure. It is NOT the BMC, which is separate and corresponds to a Redfish Manager. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocHSNBoard’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» HSNBoardLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"MgmtSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType MgmtSwitch. It represents a management switch. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocMgmtSwitch’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» MgmtSwitchLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"MgmtHLSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType MgmtHLSwitch. It represents a high level management switch. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocMgmtHLSwitch’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» MgmtHLSwitchLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"CDUMgmtSwitchLocationInfo": {
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType CDUMgmtSwitch. It represents a CDU management switch. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocCDUMgmtSwitch’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» CDUMgmtSwitchLocationInfo | HWInventory.1.0.0_RedfishChassisLocationInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"ID": "x0c0s0b0n0",
"Type": "Node",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocNode",
"NodeLocationInfo": {
"Id": "System.Embedded.1",
"Name": "Name describing system or where it is located, per manufacturing",
"Description": "Description of system/node type, per manufacturing",
"Hostname": "if_defined_in_Redfish",
"ProcessorSummary": {
"Count": 2,
"Model": "Multi-Core Intel(R) Xeon(R) processor E5-16xx Series"
},
"MemorySummary": {
"TotalSystemMemoryGiB": 64
}
},
"PopulatedFRU": {
"FRUID": "Dell-99999-1234.1234.2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "p99999",
"SerialNumber": "1234.1234.2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
},
"Processors": [
{
"ID": "x0c0s0b0n0p0",
"Type": "Processor",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU1",
"Name": "Processor",
"Description": "Socket 1 Processor",
"Socket": "CPU 1"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
},
{
"ID": "x0c0s0b0n0p1",
"Type": "Processor",
"Ordinal": 1,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocProcessor",
"ProcessorLocationInfo": {
"Id": "CPU2",
"Name": "Processor",
"Description": "Socket 2 Processor",
"Socket": "CPU 2"
},
"PopulatedFRU": {
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
}
],
"Memory": [
{
"ID": "x0c0s0b0n0d0",
"Type": "Memory",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM1",
"Name": "DIMM Slot 1",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "sn12344567689"
}
}
},
{
"ID": "x0c0s0b0n0d1",
"Type": "Memory",
"Ordinal": 1,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM2",
"Name": "Socket 1 DIMM Slot 2",
"MemoryLocation": {
"Socket": 1,
"MemoryController": 1,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
},
{
"ID": "x0c0s0b0n0d2",
"Type": "Memory",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 1",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 1
}
},
"PopulatedFRU": {
"FRUID": "MFR-PARTNUMBER-SERIALNUMBER_2",
"Type": "Memory",
"Subtype": "DIMM2400G32",
"HWInventoryByFRUType": "HWInvByFRUMemory",
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 72,
"CapacityMiB": 32768,
"DataWidthBits": 64,
"ErrorCorrection": "MultiBitECC",
"Manufacturer": "Micron",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR4",
"OperatingSpeedMhz": 2400,
"PartNumber": "XYZ-123-1232",
"RankCount": 2,
"SerialNumber": "k346456346346"
}
}
},
{
"ID": "x0c0s0b0n0d3",
"Type": "Memory",
"Ordinal": 3,
"Status": "Empty",
"HWInventoryByLocationType": "HWInvByLocMemory",
"MemoryLocationInfo": {
"Id": "DIMM3",
"Name": "Socket 2 DIMM Slot 2",
"MemoryLocation": {
"Socket": 2,
"MemoryController": 2,
"Channel": 1,
"Slot": 2
}
},
"PopulatedFRU": null
}
]
}
This is a subtype of HWInventoryByLocation for HMSType Node. It represents a service, compute, or system node. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocNode’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeLocationInfo | HWInventory.1.0.0_RedfishSystemLocationInfo | false | none | These are pass-through properties of the Redfish ComputerSystem object that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
» Processors | [HWInvByLocProcessor] | false | read-only | Embedded Processor HWInv object array representing subcomponents of that type (this is default for Nodes). |
» NodeAccels | [HWInvByLocNodeAccel] | false | read-only | Embedded NodeAccel HWInv object array representing subcomponents of that type (this is default for Nodes). |
» Drives | [HWInvByLocDrive] | false | read-only | Embedded Drives HWInv object array representing subcomponents of that type (this is default for Nodes). |
» Memory | [HWInvByLocMemory] | false | read-only | Embedded Memory HWInv object array representing subcomponents of that type (this is default for Nodes). |
» NodeAccelRisers | [HWInvByLocNodeAccelRiser] | false | read-only | Embedded NodeAccelRiser HWInv object array representing subcomponents of that type (this is default for Nodes). |
» NodeHsnNICs | [HWInvByLocHSNNIC] | false | read-only | Embedded NodeHsnNIC HWInv object array representing subcomponents of that type (this is default for Nodes). |
{
"description": "By default, listed as subcomponent of Node, see example there."
}
This is a subtype of HWInventoryByLocation for HMSType Processor. It represents a primary CPU type (e.g. non-accelerator). It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocProcessor’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» ProcessorLocationInfo | HWInventory.1.0.0_RedfishProcessorLocationInfo | false | none | These are pass-through properties of the Redfish Processor object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"description": "By default, listed as subcomponent of Node."
}
This is a subtype of HWInventoryByLocation for HMSType NodeAccel. It represents a GPU type (e.g. accelerator). It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocNodeAccel’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeAccelLocationInfo | HWInventory.1.0.0_RedfishProcessorLocationInfo | false | none | These are pass-through properties of the Redfish Processor object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"description": "By default, listed as subcomponent of Node, see example there."
}
This is a subtype of HWInventoryByLocation for HMSType Drive. It represents a disk drive. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocDrive’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» DriveLocationInfo | HWInventory.1.0.0_RedfishDriveLocationInfo | false | none | These are pass-through properties of the Redfish Drive object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"description": "By default, listed as subcomponent of Node, see example there."
}
This is a subtype of HWInventoryByLocation for HMSType Memory. It represents a DIMM or other memory module type. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocMemory’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» MemoryLocationInfo | HWInventory.1.0.0_RedfishMemoryLocationInfo | false | none | These are pass-through properties of the Redfish Memory object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"ID": "x0m0p0",
"Type": "CabinetPDU",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocPDU",
"PDULocationInfo": {
"Id": "1",
"Name": "RackPDU1",
"Description": "Description of PDU, per manufacturing",
"UUID": "32354641-4135-4332-4a35-313735303734"
},
"PopulatedFRU": {
"FRUID": "CabinetPDU.29347ZT536",
"Type": "CabinetPDU",
"HWInventoryByFRUType": "HWInvByFRUPDU",
"PDUFRUInfo": {
"FirmwareVersion": "4.3.0",
"EquipmentType": "RackPDU",
"Manufacturer": "Contoso",
"CircuitSummary": {
"TotalPhases": 3,
"TotalBranches": 4,
"TotalOutlets": 16,
"MonitoredPhases": 3,
"ControlledOutlets": 8,
"MonitoredBranches": 4,
"MonitoredOutlets": 12
},
"AssetTag": "PDX-92381",
"DateOfManufacture": "2017-01-11T08:00:00Z",
"HardwareRevision": "1.03b",
"Model": "ZAP4000",
"SerialNumber": "29347ZT536",
"PartNumber": "AA-23"
}
},
"CabinetPDUPowerConnectors": [
{
"ID": "x0m0p0v1",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A1",
"Name": "Outlet A1, Branch Circuit A",
"Description": "Outlet description"
},
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.0.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
},
{
"ID": "x0m0p0v2",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 2,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A2",
"Name": "Outlet A2, Branch Circuit A",
"Description": "Outlet description"
},
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.1.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
}
]
}
This is a subtype of HWInventoryByLocation for HMSType CabinetPDU. It represents a master or slave PowerDistribution aka PDU component. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocPDU’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» PDULocationInfo | HWInventory.1.0.0_RedfishPDULocationInfo | false | none | These are pass-through properties of the Redfish PowerDistribution object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
» CabinetPDUPowerConnectors | [HWInvByLocOutlet] | false | read-only | Embedded Outlets HWInv object array representing outlets of this PDU. |
{
"description": "By default, listed as subcomponent of PDU, see example there."
}
This is a subtype of HWInventoryByLocation for HMSType CabinetPDUPowerConnector. It an outlet that is a child of of a parent master or slave PDU. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocOutlet’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» OutletLocationInfo | HWInventory.1.0.0_RedfishOutletLocationInfo | false | none | These are pass-through properties of the Redfish PDU Outlet object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"CMMRectifierLocationInfo": {
"Name": "string",
"FirmwareVersion": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType CMMRectifier. It represents a power supply. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocCMMRectifier’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» CMMRectifierLocationInfo | HWInventory.1.0.0_RedfishCMMRectifierLocationInfo | false | none | These are pass-through properties of the Redfish Power Supply object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"NodeAccelRiserLocationInfo": {
"Name": "string",
"Description": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType NodeAccelRiser. It represents a GPUSubsystem baseboard. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocNodeAccelRiser’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeAccelRiserLocationInfo | HWInventory.1.0.0_RedfishNodeAccelRiserLocationInfo | false | none | These are the properties of the NodeAccelRiser type that are passed-through to the HMS inventory data when the underlying Redfish object type is an Assembly with a PhysicalContext of GPUSubsystem. These are the properties of a specific hardware instance/FRU that may change if the component is relocated within the system. Child of a Chassis. |
{
"NodeEnclosurePowerSupplyLocationInfo": {
"Name": "string",
"FirmwareVersion": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType NodeEnclosurePowerSupply. It represents a power supply. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocNodeEnclosurePowerSupply’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeEnclosurePowerSupplyLocationInfo | HWInventory.1.0.0_RedfishNodeEnclosurePowerSupplyLocationInfo | false | none | These are pass-through properties of the Redfish Power Supply object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"NodeBMCLocationInfo": {
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType NodeBMC. It represents a NodeBMC. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocNodeBMC’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeBMCLocationInfo | HWInventory.1.0.0_RedfishManagerLocationInfo | false | none | These are pass-through properties of the Redfish Manager object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"RouterBMCLocationInfo": {
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType RouterBMC. It represents a RouterBMC. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocRouterBMC’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RouterBMCLocationInfo | HWInventory.1.0.0_RedfishManagerLocationInfo | false | none | These are pass-through properties of the Redfish Manager object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"HSNNICLocationInfo": {
"Description": "string",
"Id": "string",
"Name": "string"
}
}
This is a subtype of HWInventoryByLocation for HMSType NodeHSNNIC. It represents a NodeHSNNIC. It is selected via the ‘discriminator: HWInventoryByLocationType’ of HWInventoryByLocation when HWInventoryByLocationType is ‘HWInvByLocHSNNIC’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByLocation.HWInventoryByLocationType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByLocation | false | none | This is the basic entry in the hardware inventory for a particular location/xname. If the location is populated (e.g. if a slot for a blade exists and the blade is present), then there will also be a link to the FRU entry for the physical piece of hardware that occupies it. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» HSNNICLocationInfo | HWInventory.1.0.0_HSNNICLocationInfo | false | none | These are pass-through properties of the Node HSN NIC object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing. |
{
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string"
}
These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturer’s naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the BMC implementation. |
Hostname | string | false | read-only | This is a pass-through of the Redfish value of the same name. Note this is simply what (if anything) Redfish has been told the hostname is. It isn’t necessarily its hostname on any particular network interface (e.g. the HMS management network). |
{
"Id": "string",
"Name": "string",
"Description": "string",
"Hostname": "string",
"ProcessorSummary": {
"Count": 0,
"Model": "string"
},
"MemorySummary": {
"TotalSystemMemoryGiB": 0
}
}
These are pass-through properties of the Redfish ComputerSystem object that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturer’s naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the BMC implementation. |
Hostname | string | false | read-only | This is a pass-through of the Redfish value of the same name. Note this is simply what (if anything) Redfish has been told the hostname is. It isn’t necessarily its hostname on any particular network interface (e.g. the HMS management network). |
ProcessorSummary | object | false | read-only | This is a summary of the installed processors, if any. It is taken from ComputerSystem.1.0.0_ProcessorSummary. |
» Count | number | false | read-only | The number of processors in the system. |
» Model | string | false | read-only | The processor model for the primary or majority of processors in this system. |
MemorySummary | object | false | read-only | This object describes the memory of the system in general detail. It is taken from ComputerSystem.1.0.0_MemorySummary. |
» TotalSystemMemoryGiB | number | false | read-only | The total installed, operating system-accessible memory (RAM), measured in GiB. |
{
"Id": "string",
"Name": "string",
"Description": "string",
"Socket": "string"
}
These are pass-through properties of the Redfish Processor object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturer’s naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the BMC implementation. |
Socket | string | false | read-only | This is a pass-through of the Redfish value of the same name. It represents the socket or location of the processor, and may differ from the normalized HMS Ordinal value (or xname) that is always indexed from 0. Manufacturers may or may not use zero indexing (or may have some other naming scheme for sockets) and so we retain this information to resolve any ambiguity when servicing the component. |
{
"Id": "string",
"Name": "string",
"Description": "string"
}
These are pass-through properties of the Redfish Drive object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturer’s naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the BMC implementation. |
{
"Id": "string",
"Name": "string",
"Description": "string",
"MemoryLocation": {
"Socket": 0,
"MemoryController": 0,
"Channel": 0,
"Slot": 0
}
}
These are pass-through properties of the Redfish Memory object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturer’s naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the BMC implementation. |
MemoryLocation | object | false | none | Describes the location of the memory module. Note that the indexing of these fields are set by the manufacturer and may not start at zero (or one for that matter) and therefore are for informational/servicing purposes only. This object and its fields are again a pass-through from Redfish. |
» Socket | number | false | read-only | Socket number (numbering may vary by manufacturer). |
» MemoryController | number | false | read-only | Memory controller number (numbering may vary by manufacturer). |
» Channel | number | false | read-only | Channel number (numbering may vary by manufacturer). |
» Slot | number | false | read-only | Slot number (numbering may vary by manufacturer). |
{
"Id": "string",
"Name": "string",
"Description": "string",
"UUID": "string"
}
These are pass-through properties of the Redfish PowerDistribution object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturers naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the implementation. |
UUID | string | false | read-only | This is a pass-through of the Redfish value of the same name. |
{
"Id": "string",
"Name": "string",
"Description": "string"
}
These are pass-through properties of the Redfish PDU Outlet object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturers naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the implementation. |
{
"Name": "string",
"FirmwareVersion": "string"
}
These are pass-through properties of the Redfish Power Supply object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
FirmwareVersion | string | false | read-only | This is a pass-through of the Redfish value of the same name. |
{
"Name": "string",
"Description": "string"
}
These are the properties of the NodeAccelRiser type that are passed-through to the HMS inventory data when the underlying Redfish object type is an Assembly with a PhysicalContext of GPUSubsystem. These are the properties of a specific hardware instance/FRU that may change if the component is relocated within the system. Child of a Chassis.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. |
{
"Name": "string",
"FirmwareVersion": "string"
}
These are pass-through properties of the Redfish Power Supply object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
FirmwareVersion | string | false | read-only | This is a pass-through of the Redfish value of the same name. |
{
"DateTime": "string",
"DateTimeLocalOffset": "string",
"Description": "string",
"FirmwareVersion": "string",
"Id": "string",
"Name": "string"
}
These are pass-through properties of the Redfish Manager object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
DateTime | string | false | read-only | This is a pass-through of the Redfish value of the same name. The current date and time with UTC offset that the manager uses to set or read time. |
DateTimeLocalOffset | string | false | read-only | This is a pass-through of the Redfish value of the same name. The time offset from UTC that the DateTime property is in +HH:MM format. |
Description | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is an informational description set by the implementation. |
FirmwareVersion | string | false | read-only | This is a pass-through of the Redfish value of the same name. |
Id | string | false | read-only | This is a pass-through of the Redfish value of the same name. The Id is included for informational purposes. The RedfishEndpoint objects are intended to help locate and interact with HMS components via the Redfish endpoint, so this is mostly needed in case servicing the component requires its ID/name according to a particular COTS manufacturers naming scheme within, for example, a particular server enclosure. |
Name | string | false | read-only | This is a pass-through of the Redfish value of the same name. This is included for informational purposes as the naming will likely vary from manufacturer-to-manufacturer, but should help match items up to manufacturer’s documentation if the normalized HMS naming scheme is too vague for some COTS systems. |
{
"Description": "string",
"Id": "string",
"Name": "string"
}
These are pass-through properties of the Node HSN NIC object type that are also used in HMS inventory data. They will be mostly informational as exactly how fields are set depends on how the particular implementation does things, but will be useful for servicing.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Description | string | false | none | This is a pass-through of the Redfish value of the same name. |
Id | string | false | none | This is a pass-through of the Redfish value of the same name. |
Name | string | false | none | This is a pass-through of the Redfish value of the same name. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
}
}
This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
FRUID | FRUId.1.0.0 | false | none | Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory, |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
FRUSubtype | string | false | none | TBD. |
HWInventoryByFRUType | string | true | none | This is used as a discriminator to determine the additional HMS-type specific subtype that is returned. |
Property | Value |
---|---|
HWInventoryByFRUType | HWInvByFRUCabinet |
HWInventoryByFRUType | HWInvByFRUChassis |
HWInventoryByFRUType | HWInvByFRUComputeModule |
HWInventoryByFRUType | HWInvByFRURouterModule |
HWInventoryByFRUType | HWInvByFRUNodeEnclosure |
HWInventoryByFRUType | HWInvByFRUHSNBoard |
HWInventoryByFRUType | HWInvByFRUMgmtSwitch |
HWInventoryByFRUType | HWInvByFRUMgmtHLSwitch |
HWInventoryByFRUType | HWInvByFRUCDUMgmtSwitch |
HWInventoryByFRUType | HWInvByFRUNode |
HWInventoryByFRUType | HWInvByFRUProcessor |
HWInventoryByFRUType | HWInvByFRUNodeAccel |
HWInventoryByFRUType | HWInvByFRUNodeAccelRiser |
HWInventoryByFRUType | HWInvByFRUDrive |
HWInventoryByFRUType | HWInvByFRUMemory |
HWInventoryByFRUType | HWInvByFRUPDU |
HWInventoryByFRUType | HWInvByFRUOutlet |
HWInventoryByFRUType | HWInvByFRUCMMRectifier |
HWInventoryByFRUType | HWInvByFRUNodeEnclosurePowerSupply |
HWInventoryByFRUType | HWInvByFRUNodeBMC |
HWInventoryByFRUType | HWInvByFRURouterBMC |
HWInventoryByFRUType | HWIncByFRUHSNNIC |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"CabinetFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType Cabinet. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUCabinet’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» CabinetFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"ChassisFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType Chassis. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUChassis’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» ChassisFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"ComputeModuleFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType ComputeModule. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUComputeModule’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» ComputeModuleFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"RouterModuleFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType RouterModule. This is a Mountain switch module. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRURouterModule’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RouterModuleFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"NodeEnclosureFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType NodeEnclosure. It represents a Mountain node card or River rack enclosure. It is NOT the BMC, which is separate and corresponds to a Redfish Manager. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUNodeEnclosure’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeEnclosureFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"HSNBoardFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType HSNBoard. It represents a Mountain switch card or River TOR enclosure. It is NOT the BMC, which is separate and corresponds to a Redfish Manager. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUHSNBoard’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» HSNBoardFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"MgmtSwitchFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType MgmtSwitch. It represents a management switch. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUMgmtSwitch’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» MgmtSwitchFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"MgmtHLSwitchFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType MgmtHLSwitch. It represents a high level management switch. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUMgmtHLSwitch’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» MgmtHLSwitchFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"CDUMgmtSwitchFRUInfo": {
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType CDUMgmtSwitch. It represents a CDU management switch. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUCDUMgmtSwitch’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» CDUMgmtSwitchFRUInfo | HWInventory.1.0.0_RedfishChassisFRUInfo | false | none | These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "string",
"BiosVersion": "string",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string",
"SystemType": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b"
}
}
This is a subtype of HWInventoryByFRU for HMSType Node. It represents a service, compute, or system node. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUNode’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeFRUInfo | HWInventory.1.0.0_RedfishSystemFRUInfo | false | none | These are pass-through properties of the Redfish ComputerSystem object that are also used in HMS inventory data. These are properties of a specific hardware instance that remain the same if the component is relocated within the system. Note that Redfish ComputerSystem objects are an abstract type that represents a system, but not necessarily a specific piece of hardware. Chassis objects represent things like the physical enclosure. The system links to chassis and also to subcomponents that have their own object types like Processors, Memory, and Storage. That said, they are a close fit to how we represent nodes in HMS and so it makes sense to pass through their properties since that is how we will discover this information anyways. |
{
"FRUID": "HOW-TO-ID-CPUS-FROM-REDFISH-IF-AT-ALL",
"Type": "Processor",
"Subtype": "SKL24",
"HWInventoryByFRUType": "HWInvByFRUProcessor",
"ProcessorFRUInfo": {
"InstructionSet": "x86-64",
"Manufacturer": "Intel",
"MaxSpeedMHz": 2600,
"Model": "Intel(R) Xeon(R) CPU E5-2623 v4 @ 2.60GHz",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": 6,
"EffectiveModel": 79,
"IdentificationRegisters": 263921,
"MicrocodeInfo": 184549399,
"Step": 1,
"VendorID": "GenuineIntel"
},
"ProcessorType": "CPU",
"TotalCores": 24,
"TotalThreads": 48
}
}
This is a subtype of HWInventoryByFRU for HMSType Processor. It represents a primary CPU type (e.g. non-accelerator). It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUProcessor’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» ProcessorFRUInfo | HWInventory.1.0.0_RedfishProcessorFRUInfo | false | none | These are pass-through properties of the Redfish Processor object type that are also used in HMS inventory data. These are properties of a specific processor instance that remain the same if it is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"NodeAccelFRUInfo": {
"InstructionSet": "x86",
"Manufacturer": "string",
"MaxSpeedMHz": 0,
"Model": "string",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": "string",
"EffectiveModel": "string",
"IdentificationRegisters": "string",
"MicrocodeInfo": "string",
"Step": "string",
"VendorId": "string"
},
"ProcessorType": "CPU",
"TotalCores": 0,
"TotalThreads": 0
}
}
This is a subtype of HWInventoryByFRU for HMSType NodeAccel. It represents a GPU type (e.g. accelerator). It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUNodeAccel’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeAccelFRUInfo | HWInventory.1.0.0_RedfishProcessorFRUInfo | false | none | These are pass-through properties of the Redfish Processor object type that are also used in HMS inventory data. These are properties of a specific processor instance that remain the same if it is relocated within the system. |
{
"HWInventoryByFRUType": "HWInvByFRUDrive",
"DriveFRUInfo": {
"SerialNumber": "S45PNA0M540940",
"Model": "SAMSUNG MZ7LH480HAHQ-00005",
"CapacityBytes": 503424483328,
"FailurePredicted": false
}
}
This is a subtype of HWInventoryByFRU for HMSType Drive. It represents a disk drive type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUDrive’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» DriveFRUInfo | HWInventory.1.0.0_RedfishDriveFRUInfo | false | none | These are pass-through properties of the Redfish Drive object type that are also used in HMS inventory data. These are properties of a specific drive instance that remain the same if it is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"MemoryFRUInfo": {
"BaseModuleType": "RDIMM",
"BusWidthBits": 0,
"CapacityMiB": 0,
"DataWidthBits": 0,
"ErrorCorrection": "NoECC",
"Manufacturer": "string",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR",
"OperatingSpeedMhz": 0,
"PartNumber": "string",
"RankCount": 0,
"SerialNumber": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType Memory. It represents a DIMM or other memory module type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByLocMemory’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» MemoryFRUInfo | HWInventory.1.0.0_RedfishMemoryFRUInfo | false | none | These are pass-through properties of the Redfish Memory object type that are also used in HMS inventory data. These are properties of a specific memory module that remain the same if it the module is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"PDUFRUInfo": {
"AssetTag": "string",
"DateOfManufacture": "string",
"EquipmentType": "RackPDU",
"FirmwareVersion": "string",
"HardwareRevision": "string",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string",
"CircuitSummary": {
"MonitoredOutlets": 0,
"TotalPhases": 0,
"ControlledOutlets": 0,
"TotalOutlets": 0,
"MonitoredBranches": 0,
"MonitoredPhases": 0,
"TotalBranches": 0
}
}
}
This is a subtype of HWInventoryByFRU for PDU HMSTypes, e.g. CabinetPDU. It represents a Redfish PowerDistribution master or slave PDU. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUPDU’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» PDUFRUInfo | HWInventory.1.0.0_RedfishPDUFRUInfo | false | none | These are pass-through properties of the Redfish PowerDistribution type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"ID": "x0m0p0v1",
"Type": "CabinetPDUPowerConnector",
"Ordinal": 0,
"Status": "Populated",
"HWInventoryByLocationType": "HWInvByLocOutlet",
"OutletLocationInfo": {
"Id": "A1",
"Name": "Outlet A1, Branch Circuit A",
"Description": "Outlet description",
"PopulatedFRU": {
"FRUID": "CabinetPDUPowerConnector.0.CabinetPDU.29347ZT536",
"Type": "CabinetPDUPowerConnector",
"HWInventoryByFRUType": "HWInvByFRUOutlet",
"OutletFRUInfo": {
"PowerEnabled": true,
"NominalVoltage": "AC120V",
"RatedCurrentAmps": 20,
"VoltageType": "AC",
"OutletType": "NEMA_5_20R",
"PhaseWiringType": "OnePhase3Wire"
}
}
}
}
This is a subtype of HWInventoryByFRU for Outlet HMSTypes, e.g. CabinetPDUPowerConnector. It represents an outlet of a PDU. It is selected via the “discriminator:” HWInventoryByFRUType of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUOutlet’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» OutletFRUInfoFRUInfo | HWInventory.1.0.0_RedfishOutletFRUInfo | false | none | These are pass-through properties of the Redfish Outlet type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a PDU. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"PowerSupplyFRUInfo": {
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string",
"PowerCapacityWatts": 0,
"PowerInputWatts": 0,
"PowerOutputWatts": 0,
"PowerSupplyType": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType CMMRectifier. It represents a power supply type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUCMMRectifier’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» PowerSupplyFRUInfo | HWInventory.1.0.0_RedfishCMMRectifierFRUInfo | false | none | These are pass-through properties of the Redfish PowerSupply type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a Chassis. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"NodeAccelRiserFRUInfo": {
"Producer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string",
"ProductionDate": "string",
"Version": "string",
"EngineeringChangeLevel": "string",
"PhysicalContext": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType NodeAccelRiser. It represents a GPUSubsystem baseboard type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUNodeAccelRiser’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeAccelRiserFRUInfo | HWInventory.1.0.0_RedfishNodeAccelRiserFRUInfo | false | none | These are the properties of the NodeAccelRiser type that are passed-through to the HMS inventory data when the underlying Redfish object type is an Assembly with a PhysicalContext of GPUSubsystem. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a Chassis. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"NodeEnclosurePowerSupplyFRUInfo": {
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string",
"PowerCapacityWatts": 0,
"PowerInputWatts": 0,
"PowerOutputWatts": 0,
"PowerSupplyType": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType NodeEnclosurePowerSupply. It represents a power supply type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUNodeEnclosurePowerSupply’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeEnclosurePowerSupplyFRUInfo | HWInventory.1.0.0_RedfishNodeEnclosurePowerSupplyFRUInfo | false | none | These are pass-through properties of the Redfish PowerSupply type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a Chassis. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"NodeBMCFRUInfo": {
"ManagerType": "string",
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType NodeBMC. It represents a Node BMC type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUNodeBMC’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» NodeBMCFRUInfo | HWInventory.1.0.0_RedfishManagerFRUInfo | false | none | These are pass-through properties of the Redfish Manager type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"RouterBMCFRUInfo": {
"ManagerType": "string",
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType RouterBMC. It represents a Router BMC type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRURouterBMC’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» RouterBMCFRUInfo | HWInventory.1.0.0_RedfishManagerFRUInfo | false | none | These are pass-through properties of the Redfish Manager type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"FRUID": "Dell-99999-1234-1234-2345",
"Type": "Node",
"Subtype": "River",
"HWInventoryByFRUType": "HWInvByFRUNode",
"NodeFRUInfo": {
"AssetTag": "AdminAssignedAssetTag",
"BiosVersion": "v1.0.2.9999",
"Model": "OKS0P2354",
"Manufacturer": "Dell",
"PartNumber": "y99999",
"SerialNumber": "1234-1234-2345",
"SKU": "as213234",
"SystemType": "Physical",
"UUID": "26276e2a-29dd-43eb-8ca6-8186bbc3d971"
},
"HSNNICFRUInfo": {
"Manufacturer": "string",
"Model": "string",
"PartNumber": "string",
"SKU": "string",
"SerialNumber": "string"
}
}
This is a subtype of HWInventoryByFRU for HMSType NodeHsnNic. It represents a node HSN NIC type. It is selected via the ‘discriminator: HWInventoryByFRUType’ of HWInventoryByFRU when HWInventoryByFRUType is ‘HWInvByFRUHSNNIC’.
allOf - discriminator: HWInventory.1.0.0_HWInventoryByFRU.HWInventoryByFRUType
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | HWInventory.1.0.0_HWInventoryByFRU | false | none | This represents a physical piece of hardware with properties specific to a unique component in the system. It is the counterpart to HWInventoryByLocation (which contains ONLY information specific to a particular location in the system that may or may not be populated), in that it contains only info about the component that is durably consistent wherever the component is installed in the system (if it is still installed at all). |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | object | false | none | none |
» HSNNICFRUInfo | HWInventory.1.0.0_HSNNICFRUInfo | false | none | These are pass-through properties of the Node HSN NIC type that are also used in HMS inventory data when this is the underlying network object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. |
{
"AssetTag": "string",
"ChassisType": "Rack",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string"
}
These are pass-through properties of the Redfish Chassis object type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
AssetTag | string | false | read-only | The administratively-assigned asset tag for this chassis. |
ChassisType | string | false | read-only | This property indicates the type of physical form factor of this resource (from Redfish - not all of these will likely appear in practice. In any case, the HMS type and subtype will identify the hardware type, this is for informational purposes only). |
Model | string | false | read-only | Manufacturer-provided model number for part. |
Manufacturer | string | false | read-only | Intended to provide the manufacturer of the part. |
PartNumber | string | false | read-only | Manufacturer-provided part number for this component. |
SerialNumber | string | false | read-only | Manufacturer-provided serial number for this component. |
SKU | string | false | read-only | Manufacturer-provided SKU for this component. |
Property | Value |
---|---|
ChassisType | Rack |
ChassisType | Blade |
ChassisType | Enclosure |
ChassisType | StandAlone |
ChassisType | RackMount |
ChassisType | Card |
ChassisType | Cartridge |
ChassisType | Row |
ChassisType | Pod |
ChassisType | Expansion |
ChassisType | Sidecar |
ChassisType | Zone |
ChassisType | Sled |
ChassisType | Shelf |
ChassisType | Drawer |
ChassisType | Module |
ChassisType | Component |
ChassisType | Other |
{
"AssetTag": "string",
"BiosVersion": "string",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string",
"SystemType": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b"
}
These are pass-through properties of the Redfish ComputerSystem object that are also used in HMS inventory data. These are properties of a specific hardware instance that remain the same if the component is relocated within the system. Note that Redfish ComputerSystem objects are an abstract type that represents a system, but not necessarily a specific piece of hardware. Chassis objects represent things like the physical enclosure. The system links to chassis and also to subcomponents that have their own object types like Processors, Memory, and Storage. That said, they are a close fit to how we represent nodes in HMS and so it makes sense to pass through their properties since that is how we will discover this information anyways.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
AssetTag | string | false | read-only | The administratively-assigned asset tag for this chassis. |
BiosVersion | string | false | read-only | The version of the system BIOS or primary system firmware. |
Model | string | false | read-only | Manufacturer-provided model number for part. |
Manufacturer | string | false | read-only | Intended to provide the manufacturer of the part. |
PartNumber | string | false | read-only | Manufacturer-provided part number for this component. |
SerialNumber | string | false | read-only | Manufacturer-provided serial number for this component. |
SKU | string | false | none | Manufacturer-provided SKU for this component. |
SystemType | string | false | read-only | Type of system. Probably always physical for now. |
UUID | UUID.1.0.0 | false | none | This is a universally unique identifier i.e. UUID in the canonical format provided by Redfish to identify endpoints and services. If this is the UUID of a RedfishEndpoint, it should be the UUID broadcast by SSDP, if applicable. |
Property | Value |
---|---|
SystemType | Physical |
SystemType | Virtual |
SystemType | OS |
SystemType | PhysicallyPartitioned |
SystemType | VirtuallyPartitioned |
{
"InstructionSet": "x86",
"Manufacturer": "string",
"MaxSpeedMHz": 0,
"Model": "string",
"ProcessorArchitecture": "x86",
"ProcessorId": {
"EffectiveFamily": "string",
"EffectiveModel": "string",
"IdentificationRegisters": "string",
"MicrocodeInfo": "string",
"Step": "string",
"VendorId": "string"
},
"ProcessorType": "CPU",
"TotalCores": 0,
"TotalThreads": 0
}
These are pass-through properties of the Redfish Processor object type that are also used in HMS inventory data. These are properties of a specific processor instance that remain the same if it is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
InstructionSet | string | false | read-only | The instruction set of the processor (Redfish pass-through) |
Manufacturer | string | false | read-only | The processor manufacturer |
MaxSpeedMHz | number | false | read-only | The maximum clock speed of the processor |
Model | string | false | read-only | The product model number of this device |
ProcessorArchitecture | string | false | read-only | The architecture of the processor |
ProcessorId | object | false | none | Identification information for this processor. Pass-through from Redfish. |
» EffectiveFamily | string | false | read-only | The effective Family for this processor |
» EffectiveModel | string | false | read-only | The effective Model for this processor |
» IdentificationRegisters | string | false | read-only | The contents of the Identification Registers (CPUID) for this processor |
» MicrocodeInfo | string | false | read-only | The Microcode Information for this processor |
» Step | string | false | read-only | The Step value for this processor |
» VendorId | string | false | read-only | The Vendor Identification for this processor |
ProcessorType | string | false | read-only | The type of processor |
TotalCores | number | false | read-only | The total number of cores contained in this processor |
TotalThreads | number | false | read-only | The total number of execution threads supported by this processor |
Property | Value |
---|---|
InstructionSet | x86 |
InstructionSet | x86-64 |
InstructionSet | IA-64 |
InstructionSet | ARM-A32 |
InstructionSet | ARM-A64 |
InstructionSet | MIPS32 |
InstructionSet | MIPS64 |
InstructionSet | OEM |
ProcessorArchitecture | x86 |
ProcessorArchitecture | IA-64 |
ProcessorArchitecture | ARM |
ProcessorArchitecture | MIPS |
ProcessorArchitecture | OEM |
ProcessorType | CPU |
ProcessorType | GPU |
ProcessorType | FPGA |
ProcessorType | DSP |
ProcessorType | Accelerator |
ProcessorType | OEM |
{
"Manufacturer": "string",
"SerialNumber": "string",
"PartNumber": "string",
"Model": "string",
"SKU": "string",
"CapacityBytes": 0,
"Protocol": "AHCI",
"MediaType": "HDD",
"RotationSpeedRPM": 0,
"BlockSizeBytes": 0,
"CapableSpeedGbs": 0,
"FailurePredicted": true,
"EncryptionAbility": "None",
"EncryptionStatus": "Foreign",
"NegotiatedSpeedGbs": 0,
"PredictedMediaLifeLeftPercent": 0
}
These are pass-through properties of the Redfish Drive object type that are also used in HMS inventory data. These are properties of a specific drive instance that remain the same if it is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Manufacturer | string | false | read-only | The drive manufacturer |
SerialNumber | string | false | read-only | Unique identifier |
PartNumber | string | false | read-only | Manufacturer part number |
Model | string | false | read-only | Manufacturer model name |
SKU | string | false | read-only | Manufacturer Stock Keeping Unit |
CapacityBytes | number | false | read-only | Manufacturer Stock Keeping Unit |
Protocol | string | false | read-only | The protocol that this drive currently uses to communicate to the storage controller. |
MediaType | string | false | read-only | The type of media contained in this drive |
RotationSpeedRPM | number | false | read-only | The rotation speed of this drive, in revolutions per minute (RPM) |
BlockSizeBytes | integer | false | read-only | The size, in bytes, of the smallest addressable unit, or block |
CapableSpeedGbs | number | false | read-only | The speed, in gigabit per second (Gbit/s), at which this drive can communicate to a storage controller in ideal conditions. |
FailurePredicted | boolean | false | read-only | An indication of whether this drive currently predicts a failure in the near future. |
EncryptionAbility | string | false | read-only | The encryption ability of this drive. |
EncryptionStatus | string | false | read-only | The status of the encryption of this drive. |
NegotiatedSpeedGbs | number | false | read-only | The speed, in gigabit per second (Gbit/s), at which this drive currently communicates to the storage controller. |
PredictedMediaLifeLeftPercent | number | false | read-only | The percentage of reads and writes that are predicted to still be available for the media. |
Property | Value |
---|---|
Protocol | AHCI |
Protocol | FC |
Protocol | FCP |
Protocol | FCoE |
Protocol | FICON |
Protocol | FTP |
Protocol | GenZ |
Protocol | HTTP |
Protocol | HTTPS |
Protocol | I2C |
Protocol | MultiProtocol |
Protocol | NFSv3 |
Protocol | NFSv4 |
Protocol | NVMe |
Protocol | NVMeOverFabrics |
Protocol | OEM |
Protocol | PCIe |
Protocol | RoCE |
Protocol | RoCEv2 |
Protocol | SAS |
Protocol | SATA |
Protocol | SFTP |
Protocol | SMB |
Protocol | TCP |
Protocol | TFTP |
Protocol | UDP |
Protocol | UHCI |
Protocol | USB |
Protocol | iSCSI |
Protocol | iWARP |
MediaType | HDD |
MediaType | SMR |
MediaType | SSD |
EncryptionAbility | None |
EncryptionAbility | Other |
EncryptionAbility | SelfEncryptingDrive |
EncryptionStatus | Foreign |
EncryptionStatus | Locked |
EncryptionStatus | Encrypted |
EncryptionStatus | Unencrypted |
EncryptionStatus | Unlocked |
{
"BaseModuleType": "RDIMM",
"BusWidthBits": 0,
"CapacityMiB": 0,
"DataWidthBits": 0,
"ErrorCorrection": "NoECC",
"Manufacturer": "string",
"MemoryType": "DRAM",
"MemoryDeviceType": "DDR",
"OperatingSpeedMhz": 0,
"PartNumber": "string",
"RankCount": 0,
"SerialNumber": "string"
}
These are pass-through properties of the Redfish Memory object type that are also used in HMS inventory data. These are properties of a specific memory module that remain the same if it the module is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
BaseModuleType | string | false | read-only | The base module type of Memory. |
BusWidthBits | number | false | read-only | Bus width in bits. |
CapacityMiB | number | false | read-only | Memory Capacity in MiB. |
DataWidthBits | number | false | read-only | Data width in bits. |
ErrorCorrection | string | false | read-only | Whether single or multiple errors, or address parity errors can be corrected. |
Manufacturer | string | false | read-only | The manufacturer of the memory module |
MemoryType | string | false | read-only | Type of memory module. |
MemoryDeviceType | string | false | read-only | Type details of the memory. |
OperatingSpeedMhz | number | false | read-only | Operating speed of Memory in MHz. |
PartNumber | string | false | read-only | Manufacturer-provided part number for this component. |
RankCount | number | false | read-only | Number of ranks available in the memory. |
SerialNumber | string | false | read-only | Manufacturer-provided serial number for this component. |
Property | Value |
---|---|
BaseModuleType | RDIMM |
BaseModuleType | UDIMM |
BaseModuleType | SO_DIMM |
BaseModuleType | LRDIMM |
BaseModuleType | Mini_RDIMM |
BaseModuleType | Mini_UDIMM |
BaseModuleType | SO_RDIMM_72b |
BaseModuleType | SO_UDIMM_72b |
BaseModuleType | SO_DIMM_16b |
BaseModuleType | SO_DIMM_32b |
ErrorCorrection | NoECC |
ErrorCorrection | SingleBitECC |
ErrorCorrection | MultiBitECC |
ErrorCorrection | AddressParity |
MemoryType | DRAM |
MemoryType | NVDIMM_N |
MemoryType | NVDIMM_F |
MemoryType | NVDIMM_P |
MemoryDeviceType | DDR |
MemoryDeviceType | DDR2 |
MemoryDeviceType | DDR3 |
MemoryDeviceType | DDR4 |
MemoryDeviceType | DDR4_SDRAM |
MemoryDeviceType | DDR4E_SDRAM |
MemoryDeviceType | LPDDR4_SDRAM |
MemoryDeviceType | DDR3_SDRAM |
MemoryDeviceType | LPDDR3_SDRAM |
MemoryDeviceType | DDR2_SDRAM |
MemoryDeviceType | DDR2_SDRAM_FB_DIMM |
MemoryDeviceType | DDR2_SDRAM_FB_DIMM_PROBE |
MemoryDeviceType | DDR_SGRAM |
MemoryDeviceType | DDR_SDRAM |
MemoryDeviceType | ROM |
MemoryDeviceType | SDRAM |
MemoryDeviceType | EDO |
MemoryDeviceType | FastPageMode |
MemoryDeviceType | PipelinedNibble |
{
"AssetTag": "string",
"DateOfManufacture": "string",
"EquipmentType": "RackPDU",
"FirmwareVersion": "string",
"HardwareRevision": "string",
"Model": "string",
"Manufacturer": "string",
"PartNumber": "string",
"SerialNumber": "string",
"SKU": "string",
"CircuitSummary": {
"MonitoredOutlets": 0,
"TotalPhases": 0,
"ControlledOutlets": 0,
"TotalOutlets": 0,
"MonitoredBranches": 0,
"MonitoredPhases": 0,
"TotalBranches": 0
}
}
These are pass-through properties of the Redfish PowerDistribution type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
AssetTag | string | false | read-only | The administratively-assigned asset tag for this chassis. |
DateOfManufacture | string | false | read-only | Manufacturer-provided date-of-manufacture for part. |
EquipmentType | string | false | read-only | This property indicates the type of PowerDistribution in practice. In any case, the HMS type and subtype will identify the hardware type, this is for informational purposes only). |
FirmwareVersion | string | false | read-only | Firmware version at time of discovery. |
HardwareRevision | string | false | read-only | Manufacturer-provided HardwareRevision for part. |
Model | string | false | read-only | Manufacturer-provided model number for part. |
Manufacturer | string | false | read-only | Intended to provide the manufacturer of the part. |
PartNumber | string | false | read-only | Manufacturer-provided part number for this component. |
SerialNumber | string | false | read-only | Manufacturer-provided serial number for this component. |
SKU | string | false | read-only | Manufacturer-provided SKU for this component. |
CircuitSummary | object | false | read-only | Summary of circuits for PDU. |
» MonitoredOutlets | number | false | read-only | Number of monitored outlets |
» TotalPhases | number | false | read-only | Number of phases in total |
» ControlledOutlets | number | false | read-only | Total number of controller outlets |
» TotalOutlets | number | false | read-only | Total number of outlets |
» MonitoredBranches | number | false | read-only | Number of monitored branches |
» MonitoredPhases | number | false | read-only | Number of monitored phases |
» TotalBranches | number | false | read-only | Number of total branches. |
Property | Value |
---|---|
EquipmentType | RackPDU |
EquipmentType | FloorPDU |
EquipmentType | ManualTransferSwitch |
EquipmentType | AutomaticTransferSwitch |
EquipmentType | Other |
{
"VoltageType": "AC",
"NominalVoltage": "string",
"PowerEnabled": true,
"RatedCurrentAmps": 0,
"OutletType": "string",
"PhaseWiringType": "OnePhase3Wire"
}
These are pass-through properties of the Redfish Outlet type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a PDU.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
VoltageType | string | false | read-only | type of voltage |
NominalVoltage | string | false | read-only | Nominal voltage for outlet. |
PowerEnabled | boolean | false | none | Indicates if the outlet can be powered. |
RatedCurrentAmps | number | false | read-only | Rated current in amps |
OutletType | string | false | read-only | Type of outlet. |
PhaseWiringType | string | false | read-only | Phase wiring type |
Property | Value |
---|---|
VoltageType | AC |
VoltageType | DC |
PhaseWiringType | OnePhase3Wire |
PhaseWiringType | TwoPhase3Wire |
PhaseWiringType | TwoPhase4Wire |
PhaseWiringType | ThreePhase4Wire |
PhaseWiringType | ThreePhase5Wire |
{
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string",
"PowerCapacityWatts": 0,
"PowerInputWatts": 0,
"PowerOutputWatts": 0,
"PowerSupplyType": "string"
}
These are pass-through properties of the Redfish PowerSupply type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a Chassis.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Manufacturer | string | false | read-only | The manufacturer of this power supply. |
SerialNumber | string | false | read-only | The serial number for this power supply. |
Model | string | false | read-only | The model number for this power supply. |
PartNumber | string | false | read-only | The part number for this power supply. |
PowerCapacityWatts | number | false | read-only | The maximum capacity of this power supply. |
PowerInputWatts | number | false | read-only | The measured input power of this power supply. |
PowerOutputWatts | number | false | read-only | The measured output power of this power supply. |
PowerSupplyType | string | false | read-only | The power supply type (AC or DC). |
{
"Producer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string",
"ProductionDate": "string",
"Version": "string",
"EngineeringChangeLevel": "string",
"PhysicalContext": "string"
}
These are the properties of the NodeAccelRiser type that are passed-through to the HMS inventory data when the underlying Redfish object type is an Assembly with a PhysicalContext of GPUSubsystem. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a Chassis.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Producer | string | false | read-only | The manufacturer of this riser card. |
SerialNumber | string | false | read-only | The serial number for this riser card. |
Model | string | false | read-only | The model number for this riser card. |
PartNumber | string | false | read-only | The part number for this riser card. |
ProductionDate | string | false | read-only | The date of production of this riser card. |
Version | string | false | read-only | The version of this riser card. |
EngineeringChangeLevel | string | false | read-only | The engineering change level of this riser card. |
PhysicalContext | string | false | read-only | The hardware type of this riser card. |
{
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string",
"PowerCapacityWatts": 0,
"PowerInputWatts": 0,
"PowerOutputWatts": 0,
"PowerSupplyType": "string"
}
These are pass-through properties of the Redfish PowerSupply type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system. Child of a Chassis.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Manufacturer | string | false | read-only | The manufacturer of this power supply. |
SerialNumber | string | false | read-only | The serial number for this power supply. |
Model | string | false | read-only | The model number for this power supply. |
PartNumber | string | false | read-only | The part number for this power supply. |
PowerCapacityWatts | number | false | read-only | The maximum capacity of this power supply. |
PowerInputWatts | number | false | read-only | The measured input power of this power supply. |
PowerOutputWatts | number | false | read-only | The measured output power of this power supply. |
PowerSupplyType | string | false | read-only | The power supply type (AC or DC). |
{
"ManagerType": "string",
"Manufacturer": "string",
"SerialNumber": "string",
"Model": "string",
"PartNumber": "string"
}
These are pass-through properties of the Redfish Manager type that are also used in HMS inventory data when this is the underlying Redfish object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ManagerType | string | false | read-only | The type of manager that this Resource represents, i.e. BMC, EnclosureManager, RackManager, etc. |
Manufacturer | string | false | read-only | The manufacturer of this manager. |
SerialNumber | string | false | read-only | The serial number for this manager. |
Model | string | false | read-only | The model number for this manager. |
PartNumber | string | false | read-only | The part number for this manager. |
{
"Manufacturer": "string",
"Model": "string",
"PartNumber": "string",
"SKU": "string",
"SerialNumber": "string"
}
These are pass-through properties of the Node HSN NIC type that are also used in HMS inventory data when this is the underlying network object type for a particular HMS component type. These are the properties of a specific hardware instance/FRU that remain the same if the component is relocated within the system.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Manufacturer | string | false | none | The manufacturer of this HSN NIC. |
Model | string | false | none | The model of this HSN NIC. |
PartNumber | string | false | none | The part number for this HSN NIC. |
SKU | string | false | none | The SKU for this HSN NIC. |
SerialNumber | string | false | none | The serial number for this HSN NIC. |
{
"Components": [
{
"ID": "string",
"History": [
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
]
}
]
}
This is the array of sorted history entries (by FRU or by location).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Components | [HWInventory.1.0.0_HWInventoryHistoryArray] | false | none | [This is the array of history entries for a particular FRU or component location (xname).] |
{
"ID": "string",
"History": [
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
]
}
This is the array of history entries for a particular FRU or component location (xname).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | Locational xname or FRU ID of the component associated with the history entries in the ‘History’ array. |
History | [HWInventory.1.0.0_HWInventoryHistory] | false | none | [This is a HWInventory history entry. Each time a HWInventory event happens a history record is created with associated data including locational xname, FRU ID, timestamp, and event type (Added, Removed, Scanned, etc).] |
{
"ID": "x0c0s0b0n0",
"FRUID": "string",
"Timestamp": "2018-08-09 03:55:57.000000",
"EventType": "Added"
}
This is a HWInventory history entry. Each time a HWInventory event happens a history record is created with associated data including locational xname, FRU ID, timestamp, and event type (Added, Removed, Scanned, etc).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
FRUID | FRUId.1.0.0 | false | none | Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory, |
Timestamp | string(date-time) | false | none | The time that the history entry was created. |
EventType | string | false | none | Describes the type of event the history entry was created for. |
Property | Value |
---|---|
EventType | Added |
EventType | Removed |
EventType | Scanned |
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
This describes a RedfishEndpoint that is interrogated in order to perform discovery of the components below it. It is a BMC or card/blade controller or other device that operates a Redfish entry point through which the components underneath it may be discovered and managed.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | XNameRFEndpoint.1.0.0 | true | none | Uniquely identifies the component by its physical location (xname). This is identical to a normal XName, but specifies a case where a BMC or other controller type is expected. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
Name | string | false | none | This is an arbitrary, user-provided name for the endpoint. It can describe anything that is not captured by the ID/xname. |
Hostname | string | false | none | Hostname of the endpoint’s FQDN, will always be the host portion of the fully-qualified domain name. Note that the hostname should normally always be the same as the ID field (i.e. xname) of the endpoint. |
Domain | string | false | none | Domain of the endpoint’s FQDN. Will always match remaining non-hostname portion of fully-qualified domain name (FQDN). |
FQDN | string | false | none | Fully-qualified domain name of RF endpoint on management network. This is not writable because it is made up of the Hostname and Domain. |
Enabled | boolean | false | none | To disable a component without deleting its data from the database, can be set to false |
UUID | UUID.1.0.0 | false | none | This is a universally unique identifier i.e. UUID in the canonical format provided by Redfish to identify endpoints and services. If this is the UUID of a RedfishEndpoint, it should be the UUID broadcast by SSDP, if applicable. |
User | string | false | none | Username to use when interrogating endpoint |
Password | string | false | none | Password to use when interrogating endpoint, normally suppressed in output. |
UseSSDP | boolean | false | none | Whether to use SSDP for discovery if the EP supports it. |
MacRequired | boolean | false | none | Whether the MAC must be used (e.g. in River) in setting up geolocation info so the endpoint’s location in the system can be determined. The MAC does not need to be provided when creating the endpoint if the endpoint type can arrive at a geolocated hostname on its own. |
MACAddr | string | false | none | This is the MAC on the of the Redfish Endpoint on the management network, i.e. corresponding to the FQDN field’s Ethernet interface where the root service is running. Not the HSN MAC. This is a MAC address in the standard colon-separated 12 byte hex format. |
IPAddress | string | false | none | This is the IP of the Redfish Endpoint on the management network, i.e. corresponding to the FQDN field’s Ethernet interface where the root service is running. This may be IPv4 or IPv6 |
RediscoverOnUpdate | boolean | false | none | Trigger a rediscovery when endpoint info is updated. |
TemplateID | string | false | none | Links to a discovery template defining how the endpoint should be discovered. |
DiscoveryInfo | object | false | read-only | Contains info about the discovery status of the given endpoint. |
» LastAttempt | string(date-time) | false | read-only | The time the last discovery attempt took place. |
» LastStatus | string | false | read-only | Describes the outcome of the last discovery attempt. |
» RedfishVersion | string | false | read-only | Version of Redfish as reported by the RF service root. |
Property | Value |
---|---|
LastStatus | EndpointInvalid |
LastStatus | EPResponseFailedDecode |
LastStatus | HTTPsGetFailed |
LastStatus | NotYetQueried |
LastStatus | VerificationFailed |
LastStatus | ChildVerificationFailed |
LastStatus | DiscoverOK |
{
"Name": "(Type of Object) Collection",
"Members": [
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
],
"MemberCount": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Should describe the collection, though the type of resources the links correspond to should also be inferred from the context in which the collection was obtained. |
Members | [ResourceURI.1.0.0] | false | read-only | An array of ResourceIds. |
MemberCount | number(int32) | false | read-only | Number of ResourceURIs in the collection |
{
"RedfishEndpoints": [
{
"ID": "x0c0s0b0",
"Type": "Node",
"Name": "string",
"Hostname": "string",
"Domain": "string",
"FQDN": "string",
"Enabled": true,
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"User": "string",
"Password": "string",
"UseSSDP": true,
"MacRequired": true,
"MACAddr": "ae:12:e2:ff:89:9d",
"IPAddress": "10.254.2.10",
"RediscoverOnUpdate": true,
"TemplateID": "string",
"DiscoveryInfo": {
"LastAttempt": "2019-08-24T14:15:22Z",
"LastStatus": "EndpointInvalid",
"RedfishVersion": "string"
}
}
]
}
This is a collection of RedfishEndpoint objects returned whenever a query is expected to result in 0 to n matches.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
RedfishEndpoints | [RedfishEndpoint.1.0.0_RedfishEndpoint] | false | none | Contains the HMS RedfishEndpoint objects in the array. |
{
"RedfishEndpointIDs": [
"x0c0s0b0n0"
],
"partition": "p1.2"
}
There are limits to the length of an HTTP URL and query string. Hence, if we wish to query an arbitrary list of XName/IDs, it will need to be in the body of the request. This object is used for this purpose. It is similar to the analogous GET operation.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
RedfishEndpointIDs | [XNameForQuery.1.0.0] | true | none | An array of XName/ID values for the RedfishEndpoints to query. |
partition | XNamePartition.1.0.0 | false | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input. |
{
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointFQDN": "string",
"RedfishURL": "string",
"ServiceInfo": {
"Name": "string"
}
}
This describes a service running on a Redfish endpoint and is populated when Redfish endpoint discovery occurs. It is used by clients who need to interact directly with the service via Redfish. There are also ComponentEndpoints, which represent Redfish components of a physical type (i.e., we track their state as components), which are also discovered when the Redfish Endpoint is discovered. The RedfishEndpointID is just the ID of the parent Redfish endpoint. As there are many service types per endpoint, the RedfishType must also be included to get a unique entry for a service. Services do not have their own xnames, and so they are identified by thee combination of the RedfishEndpointID they are running on, plus the RedfishType value (e.g. AccountService, TaskService, etc.). NOTE: These records are discovered, not created, and therefore are not writable (since any changes would be overwritten by a subsequent discovery).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
RedfishEndpointID | XNameRFEndpoint.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). This is identical to a normal XName, but specifies a case where a BMC or other controller type is expected. |
RedfishType | RedfishType.1.0.0 | false | none | This is the Redfish object type, not to be confused with the HMS component type. |
RedfishSubtype | RedfishSubtype.1.0.0 | false | none | This is the type corresponding to the Redfish object type, i.e. the ChassisType field, SystemType, ManagerType fields. We only use these three types to create ComponentEndpoints for now. |
UUID | UUID.1.0.0 | false | none | This is a universally unique identifier i.e. UUID in the canonical format provided by Redfish to identify endpoints and services. If this is the UUID of a RedfishEndpoint, it should be the UUID broadcast by SSDP, if applicable. |
OdataID | OdataID.1.0.0 | false | none | This is the path (relative to a Redfish endpoint) of a particular Redfish resource, e.g. /Redfish/v1/Systems/System.Embedded.1 |
RedfishEndpointFQDN | string | false | read-only | This is a back-reference to the fully-qualified domain name of the parent Redfish endpoint that was used to discover the component. It is the RedfishEndpointID field i.e. the hostname/xname plus its current domain. |
RedfishURL | string | false | read-only | This is the complete URL to the corresponding Redfish object, combining the RedfishEndpoint’s FQDN and the OdataID. |
ServiceInfo | ServiceEndpoint.1.0.0_ServiceInfo | false | none | This is any additional information for the service. This is service specific. Schema for Redfish services can be found at https://redfish.dmtf.org/redfish/schema_index |
{
"Name": "string"
}
This is any additional information for the service. This is service specific. Schema for Redfish services can be found at https://redfish.dmtf.org/redfish/schema_index
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | The name of the service. |
{
"ServiceEndpoints": [
{
"RedfishEndpointID": "x0c0s0b0",
"RedfishType": "ComputerSystem",
"RedfishSubtype": "Physical",
"UUID": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"OdataID": "/redfish/v1/Systems/System.Embedded.1",
"RedfishEndpointFQDN": "string",
"RedfishURL": "string",
"ServiceInfo": {
"Name": "string"
}
}
]
}
This is a collection of ServiceEndpoint objects returned whenever a query is expected to result in 0 to n matches.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ServiceEndpoints | [ServiceEndpoint.1.0.0_ServiceEndpoint] | false | none | Contains the HMS ServiceEndpoint objects in the array. |
{
"ID": "a4bf012b7310",
"Description": "string",
"MACAddress": "string",
"IPAddresses": [
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
],
"LastUpdate": "2020-05-13T19:18:45.524974Z",
"ComponentID": "x0c0s1b0n0",
"Type": "Node"
}
A component Ethernet interface is an object describing a relation between a MAC address and IP address for components.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | read-only | The ID of the component Ethernet interface. |
Description | string | false | none | An optional description for the component Ethernet interface. |
MACAddress | string | true | none | The MAC address of this component Ethernet interface |
IPAddresses | [CompEthInterface.1.0.0_IPAddressMapping] | false | none | The IP addresses associated with the MAC address for this component Ethernet interface. |
LastUpdate | string(date-time) | false | read-only | A timestamp for when the component Ethernet interface last was modified. |
ComponentID | XNameRW.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
Type | HMSType.1.0.0 | false | none | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
{
"Description": "string",
"IPAddresses": [
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
],
"ComponentID": "x0c0s1b0n0"
}
To update the IP addresses, CompID, and/or description fields of a component Ethernet interface, a PATCH operation can be used. Omitted fields are not updated. NOTE: Updating the IP addresses field updates the LastUpdate field.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Description | string | false | none | An optional description for the component Ethernet interface. |
IPAddresses | [CompEthInterface.1.0.0_IPAddressMapping] | false | none | The IP addresses associated with the MAC address for this component Ethernet interface. |
ComponentID | XNameRW.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
{
"IPAddress": "10.252.0.1",
"Network": "HMN"
}
A IP address Mapping maps a IP address to a network. In a Component Ethernet Interface it is used to describe what IP addresses and their networks that are associated with it.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
IPAddress | string | true | none | The IP address associated with the MAC address for this component Ethernet interface on for this particular network. |
Network | string | false | none | The network that this IP addresses is associated with. |
{
"Network": "string"
}
To update the network field a IP address mapping in a component Ethernet interface a PATCH operation can be used. Omitted fields are not updated.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Network | string | false | none | The network that this IP addresses is associated with. |
{
"ID": 0,
"Status": "Complete",
"LastUpdateTime": "2018-08-09 03:55:57.000000",
"Details": null
}
Returns info on the current status of a discovery operation with the given ID returned when a Discover action is requested.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | number(int32) | false | read-only | The ID number of the discover operation. |
Status | string | false | read-only | Describes the status of the given Discover operation. |
LastUpdateTime | string(date-time) | false | read-only | The time that the Status field was last updated. |
Details | DiscoveryStatus.1.0.0_Details | false | none | Details accompanying a DiscoveryStatus entry. Optional. Reserved for future use. |
Property | Value |
---|---|
Status | NotStarted |
Status | Pending |
Status | InProgress |
Status | Complete |
null
Details accompanying a DiscoveryStatus entry. Optional. Reserved for future use.
None
{
"xnames": [
"x0c0s0b0"
],
"force": false
}
The POST body for a Discover operation. Note that these fields are optional. The default for the xnames field is to select all RedfishEndpoints. The default for force is false.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
xnames | [XNameRFEndpoint.1.0.0] | false | none | An array of XName/ID values for the RedfishEndpoints to discover. If zero-length or omitted, all RedfishEndpoints will be discovered. |
force | boolean | false | none | Whether to force discovery if there is already a conflicting DiscoveryStatus entry that is either Pending or InProgress. default is false. |
{
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
This is the JSON payload that contains information to create a new state change notification subscription
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Subscriber | string | false | none | This is the name of the subscriber. |
Enabled | boolean | false | none | This value toggles subscriptions to state change notifications concerning components being disabled or enabled. ’true’ will cause the subscriber to be notified about components being enabled or disabled. ‘false’ or empty will result in no such notifications. |
Roles | [HMSRole.1.0.0] | false | none | This is an array containing component roles for which to be notified when role changes occur. |
SubRoles | [HMSSubRole.1.0.0] | false | none | This is an array containing component subroles for which to be notified when subrole changes occur. |
SoftwareStatus | [string] | false | none | This is an array containing component software statuses for which to be notified when software status changes occur. |
States | [HMSState.1.0.0] | false | none | This is an array containing component states for which to be notified when state changes occur. |
Url | Subscriptions_Url | false | none | URL to send notifications to |
{
"Op": "add",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
]
}
This is the JSON payload that contains state change notification subscription information.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Op | string | false | none | The type of operation to be performed on the subscription |
Enabled | boolean | false | none | This value toggles subscriptions to state change notifications concerning components being disabled or enabled. ’true’ will cause the subscriber to be notified about components being enabled or disabled. ‘false’ or empty will result in no such notifications. |
Roles | [HMSRole.1.0.0] | false | none | This is an array containing component roles for which to be notified when role changes occur. |
SubRoles | [HMSSubRole.1.0.0] | false | none | This is an array containing component subroles for which to be notified when subrole changes occur. |
SoftwareStatus | [string] | false | none | This is an array containing component software statuses for which to be notified when software status changes occur. |
States | [HMSState.1.0.0] | false | none | This is an array containing component states for which to be notified when state changes occur. |
Property | Value |
---|---|
Op | add |
Op | remove |
Op | replace |
{
"ID": "42",
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
State change notification subscription JSON payload.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | Subscription_ID | false | none | This is the ID associated with the subscription that was generated at its creation. |
Subscriber | string | false | none | none |
Enabled | boolean | false | none | This value toggles subscriptions to state change notifications concerning components being disabled or enabled. ’true’ will cause the subscriber to be notified about components being enabled or disabled. ‘false’ or empty will result in no such notifications. |
Roles | [HMSRole.1.0.0] | false | none | This is an array containing component roles for which to be notified when role changes occur. |
SubRoles | [HMSSubRole.1.0.0] | false | none | This is an array containing component subroles for which to be notified when subrole changes occur. |
SoftwareStatus | [string] | false | none | This is an array containing component software statuses for which to be notified when software status changes occur. |
States | [HMSState.1.0.0] | false | none | This is an array containing component states for which to be notified when state changes occur. |
Url | Subscriptions_Url | false | none | URL to send notifications to |
{
"SubscriptionList": [
{
"ID": "42",
"Subscriber": "scnfd@sms02.cray.com",
"Enabled": true,
"Roles": [
"Compute"
],
"SubRoles": [
"Worker"
],
"SoftwareStatus": [
"string"
],
"States": [
"Ready"
],
"Url": "https://sms02.cray.com:27000/scnfd/v1/scn"
}
]
}
List of all currently held state change notification subscriptions.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
SubscriptionList | [Subscriptions_SCNSubscriptionArrayItem.1.0.0] | false | none | [State change notification subscription JSON payload.] |
"https://sms02.cray.com:27000/scnfd/v1/scn"
URL to send notifications to
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | URL to send notifications to |
"42"
This is the ID associated with the subscription that was generated at its creation.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is the ID associated with the subscription that was generated at its creation. |
{
"label": "blue",
"description": "This is the blue group",
"tags": [
"optional_tag1",
"optional_tag2"
],
"exclusiveGroup": "optional_excl_group",
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x1c0s2b0n0",
"x1c0s2b0n1"
]
}
}
A group is an informal, possibly overlapping division of the system that groups components under an administratively chosen label (i.e. group name). Unlike partitions, components can be members of any number of groups.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
label | ResourceName | true | none | Acceptable format for certain user-requested string identifiers. |
description | string | false | none | A one-line, user-provided description of the group. |
tags | [ResourceName] | false | none | A free-form array of strings to provide extra organization/filtering. Not to be confused with labels/groups. |
exclusiveGroup | ResourceName | false | none | Acceptable format for certain user-requested string identifiers. |
members | Members.1.0.0 | false | none | The members are a fully enumerated (i.e. no implied members besides those explicitly provided) representation of the components a partition or group |
{
"description": "This is an updated group description",
"tags": [
"new_tag",
"existing_tag"
]
}
To update the tags array and/or description, a PATCH operation can be used. If either field is omitted, it will not be updated. NOTE: This cannot be used to completely replace the members list Rather, individual members can be removed or added with the POST/DELETE /members API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
description | string | false | none | A one-line, user-provided description of the group. |
tags | [ResourceName] | false | none | A free-form array of strings to provide extra organization/filtering. Not to be confused with labels/groups. |
{
"name": "p1",
"description": "This is partition 1",
"tags": [
"optional_tag_a",
"optional_tag1"
],
"members": {
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
}
A partition is a formal, non-overlapping division of the system that forms an administratively distinct sub-system e.g. for implementing multi-tenancy.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | ResourceName | true | none | Acceptable format for certain user-requested string identifiers. |
description | string | false | none | A one-line, user-provided description of the partition. |
tags | [ResourceName] | false | none | A free-form array of strings to provide extra organization/filtering. Not to be confused with labels/groups. |
members | Members.1.0.0 | false | none | The members are a fully enumerated (i.e. no implied members besides those explicitly provided) representation of the components a partition or group |
{
"description": "This is an updated partition description",
"tags": [
"new_tag",
"existing_tag"
]
}
To update the tags array and/or description, a PATCH operation can be used. If either field is omitted, it will not be updated. NOTE: This cannot be used to completely replace the members list Rather, individual members can be removed or added with the POST/DELETE /members API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
description | string | false | none | A one-line, user-provided description of the group. |
tags | [ResourceName] | false | none | A free-form array of strings to provide extra organization/filtering. Not to be confused with labels/groups. |
{
"ids": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x2c0s3b0n0",
"x2c0s3b0n1"
]
}
The members are a fully enumerated (i.e. no implied members besides those explicitly provided) representation of the components a partition or group
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ids | [XNameRW.1.0.0] | false | none | Set of Component XName IDs that represent the membership of the group or partition. |
{
"id": "x0c0s1b0n0"
}
This is used when creating an new entry in a Group or Partition members array. It is the xname ID of the new member.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | XNameRW.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
{
"id": "x0c0s22b0n0",
"nid": 45,
"partitionName": "p1",
"groupLabels": [
"group1",
"group2"
]
}
A membership is a mapping of a component xname to its set of group labels and partition names.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
partitionName | string | false | none | The name is a human-readable identifier for the partition and uniquely identifies it. |
groupLabels | [string] | false | none | An array with all group labels the component is associated with The label is the human-readable identifier for a group and uniquely identifies it. |
{
"id": "bf9362ad-b29c-40ed-9881-18a5dba3a26b",
"created": "2019-09-12 03:55:57.000000",
"reason": "For firmware update",
"owner": "FUS",
"lifetime": 90,
"xnames": [
"x1c0s1b0n0",
"x1c0s1b0n1",
"x1c0s2b0n0",
"x1c0s2b0n1"
]
}
A lock is an object describing a temporary reservation of a set of components held by an external service. If not removed by the external service, HSM will automatically remove the lock after its lifetime has expired.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | read-only | The ID number of the lock. |
created | string(date-time) | false | read-only | A timestamp for when the lock was created. |
reason | string | false | none | A one-line, user-provided reason for the lock. |
owner | string | true | none | A user-provided self identifier for the lock |
lifetime | integer | true | none | The length of time in seconds the component lock should exist before it is automatically deleted by HSM. |
xnames | [XNameRW.1.0.0] | true | none | An array of XName/ID values for the components managed by the lock. These components will have their component flag set to “Locked” upon lock creation and set to “OK” upon lock deletion. |
{
"reason": "For firmware update",
"owner": "FUS.25",
"lifetime": 90
}
To update the reason, owner, and/or lifetime fields, a PATCH operation can be used. Omitted fields are not updated. NOTE: Updating the lifetime field renews the lock. The new expiration time is the lifetime length AFTER the update. The creation timestamp is updated.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
reason | string | false | none | A one-line, user-provided reason for the lock. |
owner | string | false | none | A user-provided self identifier for the lock (service.JobID) |
lifetime | integer | false | none | The length of time in seconds the component lock should exist before it is automatically deleted by HSM. |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | false | none | An array of XName/ID values for the components to query. |
Partition | [string] | false | none | Partition name to filter on, as per current /partitions/names |
Group | [string] | false | none | Group label to filter on, as per current /groups/labels |
Type | [string] | false | none | Retrieve all components with the given HMS type. |
State | [HMSState.1.0.0] | false | none | Retrieve all components with the given HMS state. |
Flag | [HMSFlag.1.0.0] | false | none | Retrieve all components with the given HMS flag value. |
Enabled | [string] | false | none | Retrieve all components with the given enabled status (true or false). |
Softwarestatus | [string] | false | none | Retrieve all components with the given software status. Software status is a free form string. Matching is case-insensitive. |
Role | [HMSRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS role |
Subrole | [HMSSubRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS subrole |
Subtype | [string] | false | none | Retrieve all components with the given HMS subtype. |
Arch | [HMSArch.1.0.0] | false | none | Retrieve all components with the given architecture. |
Class | [HMSClass.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS hardware class. Class can be River, Mountain, etc. |
NID | [string] | false | none | Retrieve all components (i.e. one node) with the given integer NID |
ProcessingModel | string | false | none | Rigid is all or nothing, flexible is best attempt. |
Property | Value |
---|---|
ProcessingModel | rigid |
ProcessingModel | flexible |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | false | none | An array of XName/ID values for the components to query. |
Partition | [string] | false | none | Partition name to filter on, as per current /partitions/names |
Group | [string] | false | none | Group label to filter on, as per current /groups/labels |
Type | [string] | false | none | Retrieve all components with the given HMS type. |
State | [HMSState.1.0.0] | false | none | Retrieve all components with the given HMS state. |
Flag | [HMSFlag.1.0.0] | false | none | Retrieve all components with the given HMS flag value. |
Enabled | [string] | false | none | Retrieve all components with the given enabled status (true or false). |
Softwarestatus | [string] | false | none | Retrieve all components with the given software status. Software status is a free form string. Matching is case-insensitive. |
Role | [HMSRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS role |
Subrole | [HMSSubRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS subrole |
Subtype | [string] | false | none | Retrieve all components with the given HMS subtype. |
Arch | [HMSArch.1.0.0] | false | none | Retrieve all components with the given architecture. |
Class | [HMSClass.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS hardware class. Class can be River, Mountain, etc. |
NID | [string] | false | none | Retrieve all components (i.e. one node) with the given integer NID |
ProcessingModel | string | false | none | Rigid is all or nothing, flexible is best attempt. |
Property | Value |
---|---|
ProcessingModel | rigid |
ProcessingModel | flexible |
{
"Components": [
{
"ID": "x1001c0s0b0",
"Locked": false,
"Reserved": true,
"CreatedTime": "2019-08-24T14:15:22Z",
"ExpirationTime": "2019-08-24T14:15:22Z",
"ReservationDisabled": false
}
],
"NotFound": [
"x1000c0s0b0"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Components | [ComponentStatus.1.0.0] | false | none | none |
NotFound | [string] | false | none | none |
{
"Success": [
{
"ID": "string",
"DeputyKey": "string",
"ReservationKey": "string"
}
],
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Success | [XnameKeysNoExpire.1.0.0] | false | none | none |
Failure | [FailedXnames.1.0.0] | false | none | none |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | false | none | An array of XName/ID values for the components to query. |
Partition | [string] | false | none | Partition name to filter on, as per current /partitions/names |
Group | [string] | false | none | Group label to filter on, as per current /groups/labels |
Type | [string] | false | none | Retrieve all components with the given HMS type. |
State | [HMSState.1.0.0] | false | none | Retrieve all components with the given HMS state. |
Flag | [HMSFlag.1.0.0] | false | none | Retrieve all components with the given HMS flag value. |
Enabled | [string] | false | none | Retrieve all components with the given enabled status (true or false). |
Softwarestatus | [string] | false | none | Retrieve all components with the given software status. Software status is a free form string. Matching is case-insensitive. |
Role | [HMSRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS role |
Subrole | [HMSSubRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS subrole |
Subtype | [string] | false | none | Retrieve all components with the given HMS subtype. |
Arch | [HMSArch.1.0.0] | false | none | Retrieve all components with the given architecture. |
Class | [HMSClass.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS hardware class. Class can be River, Mountain, etc. |
NID | [string] | false | none | Retrieve all components (i.e. one node) with the given integer NID |
ProcessingModel | string | false | none | Rigid is all or nothing, flexible is best attempt. |
Property | Value |
---|---|
ProcessingModel | rigid |
ProcessingModel | flexible |
{
"ComponentIDs": [
"x0c0s0b0n0"
],
"Partition": [
"p1"
],
"Group": [
"group_label"
],
"Type": [
"string"
],
"State": [
"Ready"
],
"Flag": [
"OK"
],
"Enabled": [
"string"
],
"Softwarestatus": [
"string"
],
"Role": [
"Compute"
],
"Subrole": [
"Worker"
],
"Subtype": [
"string"
],
"Arch": [
"X86"
],
"Class": [
"River"
],
"NID": [
"string"
],
"ProcessingModel": "rigid",
"ReservationDuration": 1
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [XNameForQuery.1.0.0] | false | none | An array of XName/ID values for the components to query. |
Partition | [string] | false | none | Partition name to filter on, as per current /partitions/names |
Group | [string] | false | none | Group label to filter on, as per current /groups/labels |
Type | [string] | false | none | Retrieve all components with the given HMS type. |
State | [HMSState.1.0.0] | false | none | Retrieve all components with the given HMS state. |
Flag | [HMSFlag.1.0.0] | false | none | Retrieve all components with the given HMS flag value. |
Enabled | [string] | false | none | Retrieve all components with the given enabled status (true or false). |
Softwarestatus | [string] | false | none | Retrieve all components with the given software status. Software status is a free form string. Matching is case-insensitive. |
Role | [HMSRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS role |
Subrole | [HMSSubRole.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS subrole |
Subtype | [string] | false | none | Retrieve all components with the given HMS subtype. |
Arch | [HMSArch.1.0.0] | false | none | Retrieve all components with the given architecture. |
Class | [HMSClass.1.0.0] | false | none | Retrieve all components (i.e. nodes) with the given HMS hardware class. Class can be River, Mountain, etc. |
NID | [string] | false | none | Retrieve all components (i.e. one node) with the given integer NID |
ProcessingModel | string | false | none | Rigid is all or nothing, flexible is best attempt. |
ReservationDuration | integer | false | none | Length of time in minutes for the reservation to be valid for. |
Property | Value |
---|---|
ProcessingModel | rigid |
ProcessingModel | flexible |
{
"Success": [
{
"ID": "string",
"DeputyKey": "string",
"ReservationKey": "string",
"ExpirationTime": "2019-08-24T14:15:22Z"
}
],
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Success | [XnameKeys.1.0.0] | false | none | none |
Failure | [FailedXnames.1.0.0] | false | none | none |
{
"Success": [
{
"ID": "string",
"DeputyKey": "string",
"ExpirationTime": "2019-08-24T14:15:22Z"
}
],
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Success | [XnameKeysDeputyExpire.1.0.0] | false | none | none |
Failure | [FailedXnames.1.0.0] | false | none | none |
{
"ComponentIDs": [
"string"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ComponentIDs | [string] | false | none | none |
{
"ID": "string",
"DeputyKey": "string",
"ReservationKey": "string"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | none |
DeputyKey | string | false | none | The key that can be passed to a delegate. |
ReservationKey | string | false | none | The key that can be used to renew/release the reservation. Should not be delegated or shared. |
{
"ID": "string",
"DeputyKey": "string",
"ReservationKey": "string",
"ExpirationTime": "2019-08-24T14:15:22Z"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | none |
DeputyKey | string | false | none | The key that can be passed to a delegate. |
ReservationKey | string | false | none | The key that can be used to renew/release the reservation. Should not be delegated or shared. |
ExpirationTime | string(date-time) | false | none | none |
{
"ID": "string",
"DeputyKey": "string",
"ExpirationTime": "2019-08-24T14:15:22Z"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | none |
DeputyKey | string | false | none | The key that can be passed to a delegate. |
ExpirationTime | string(date-time) | false | none | none |
{
"ID": "string",
"Key": "string"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | none |
Key | string | false | none | none |
{
"DeputyKeys": [
{
"ID": "string",
"Key": "string"
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
DeputyKeys | [XnameWithKey.1.0.0] | false | none | none |
{
"ReservationKeys": [
{
"ID": "string",
"Key": "string"
}
],
"ProcessingModel": "rigid"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ReservationKeys | [XnameWithKey.1.0.0] | false | none | none |
ProcessingModel | string | false | none | Rigid is all or nothing, flexible is best attempt. |
Property | Value |
---|---|
ProcessingModel | rigid |
ProcessingModel | flexible |
{
"ReservationKeys": [
{
"ID": "string",
"Key": "string"
}
],
"ProcessingModel": "rigid",
"ReservationDuration": 1
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ReservationKeys | [XnameWithKey.1.0.0] | false | none | none |
ProcessingModel | string | false | none | Rigid is all or nothing, flexible is best attempt. |
ReservationDuration | integer | false | none | Length of time in minutes for the reservation to be valid for. |
Property | Value |
---|---|
ProcessingModel | rigid |
ProcessingModel | flexible |
{
"Total": 0,
"Success": 0,
"Failure": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Total | integer | false | none | none |
Success | integer | false | none | none |
Failure | integer | false | none | none |
{
"ID": "string",
"Reason": "NotFound"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | none |
Reason | string | false | none | The key that can be passed to a delegate. |
Property | Value |
---|---|
Reason | NotFound |
Reason | Locked |
Reason | Disabled |
Reason | Reserved |
Reason | ServerError |
{
"ID": "x1001c0s0b0",
"Locked": false,
"Reserved": true,
"CreatedTime": "2019-08-24T14:15:22Z",
"ExpirationTime": "2019-08-24T14:15:22Z",
"ReservationDisabled": false
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | none |
Locked | boolean | false | none | none |
Reserved | boolean | false | none | none |
CreatedTime | string(date-time) | false | none | none |
ExpirationTime | string(date-time) | false | none | none |
ReservationDisabled | boolean | false | none | none |
{
"Counts": {
"Total": 0,
"Success": 0,
"Failure": 0
},
"Success": {
"ComponentIDs": [
"string"
]
},
"Failure": [
{
"ID": "string",
"Reason": "NotFound"
}
]
}
This is a simple CAPMC-like response, intended mainly for non-error messages. For client errors, we now use RFC7807 responses.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Counts | Counts.1.0.0 | false | none | none |
Success | Xnames | false | none | none |
Failure | [FailedXnames.1.0.0] | false | none | none |
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
PowerMaps used to show which components are powered by which power supplies.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | XName.1.0.0 | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
poweredBy | [XNameRW.1.0.0] | true | none | A list of components that supply this component with power. |
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
PowerMaps used to show which components are powered by which power supplies.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | XNameRW.1.0.0 | true | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
poweredBy | [XNameRW.1.0.0] | true | none | A list of components that supply this component with power. |
[
{
"id": "x0c0s1b0n0",
"poweredBy": [
"x0m0p0j10",
"x0m0p0j11"
]
}
]
This is an array of PowerMap objects. This is the result of GET-ing the PowerMaps collection, or can be used to populate or update it as input provided via POST.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [PowerMap.1.0.0_PostPowerMap] | false | none | This is an array of PowerMap objects. This is the result of GET-ing the PowerMaps collection, or can be used to populate or update it as input provided via POST. |
null
This is a list of parameters and their valid values. These values are valid for various parameters in this API.
allOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_ArchArray | false | none | This is an array of valid HMSArch values. These values are valid for any ‘arch’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_ClassArray | false | none | This is an array of valid HMSClass values. These values are valid for any ‘class’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_FlagArray | false | none | This is an array of valid HMSFlag values. These values are valid for any ‘flag’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_NetTypeArray | false | none | This is an array of valid NetType values. These values are valid for any ’nettype’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_RoleArray | false | none | This is an array of valid HMSRole values. These values are valid for any ‘role’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_SubRoleArray | false | none | This is an array of valid HMSSubRole values. These values are valid for any ‘subrole’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_StateArray | false | none | This is an array of valid HMSState values. These values are valid for any ‘state’ parameter in this API. |
and
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | Values.1.0.0_TypeArray | false | none | This is an array of valid HMSType values. These values are valid for any ’type’ parameter in this API. |
{
"Arch": [
"X86"
]
}
This is an array of valid HMSArch values. These values are valid for any ‘arch’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Arch | [HMSArch.1.0.0] | false | none | [This is the basic architecture of the component so the proper software can be selected and so on.] |
{
"Class": [
"River"
]
}
This is an array of valid HMSClass values. These values are valid for any ‘class’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Class | [HMSClass.1.0.0] | false | none | [This is the HSM hardware class of the component.] |
{
"Flag": [
"OK"
]
}
This is an array of valid HMSFlag values. These values are valid for any ‘flag’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Flag | [HMSFlag.1.0.0] | false | none | [This property indicates the state flag of the underlying component.] |
{
"NetType": [
"Sling"
]
}
This is an array of valid NetType values. These values are valid for any ’nettype’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
NetType | [NetType.1.0.0] | false | none | [This is the type of high speed network the component is connected to, if it is an applicable component type and the interface is present, or the type of the system HSN.] |
{
"Role": [
"Compute"
]
}
This is an array of valid HMSRole values. These values are valid for any ‘role’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Role | [HMSRole.1.0.0] | false | none | [This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list.] |
{
"SubRole": [
"Worker"
]
}
This is an array of valid HMSSubRole values. These values are valid for any ‘subrole’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
SubRole | [HMSSubRole.1.0.0] | false | none | [This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list.] |
{
"State": [
"Ready"
]
}
This is an array of valid HMSState values. These values are valid for any ‘state’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
State | [HMSState.1.0.0] | false | none | [This property indicates the state of the underlying component.] |
{
"Type": [
"Node"
]
}
This is an array of valid HMSType values. These values are valid for any ’type’ parameter in this API.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Type | [HMSType.1.0.0] | false | none | [This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery.] |
{
"#Chassis.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff"
],
"target": "/redfish/v1/Chassis/RackEnclosure/Actions/Chassis.Reset"
}
}
This is a pass-through field from Redfish that lists the available actions for a Chassis component (if any were found, else if it be omitted entirely).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
#Chassis.Reset | object | false | none | none |
» ResetType@Redfish.AllowableValues | [string] | false | none | List of allowable ‘reset’ Redfish Action types |
» target | string | false | none | target URI for Redfish Action |
{
"#ComputerSystem.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff",
"ForceRestart"
],
"target": "/redfish/v1/Systems/System.1/Actions/ComputerSystem.Reset"
}
}
This is a pass-through field from Redfish that lists the available actions for a System component (if any were found, else if it be omitted entirely).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
#ComputerSystem.Reset | object | false | none | none |
» ResetType@Redfish.AllowableValues | [string] | false | none | List of allowable ‘reset’ Redfish Action types |
» target | string | false | none | target URI for Redfish Action |
{
"#Manager.Reset": {
"ResetType@Redfish.AllowableValues": [
"ForceRestart"
],
"target": "/redfish/v1/Managers/BMC/Actions/Manager.Reset"
}
}
This is a pass-through field from Redfish that lists the available actions for a Manager component (if any were found, else if it be omitted entirely).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
#Manager.Reset | object | false | none | none |
» ResetType@Redfish.AllowableValues | [string] | false | none | List of allowable ‘reset’ Redfish Action types |
» target | string | false | none | target URI for Redfish Action |
{
"#Outlet.PowerControl": {
"PowerControl@Redfish.AllowableValues": [
"On"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.PowerControl"
},
"#Outlet.ResetBreaker": {
"ResetBreaker@Redfish.AllowableValues": [
"Off"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.ResetBreaker"
},
"#Outlet.ResetStatistics": {
"ResetStatistics@Redfish.AllowableValues": [
"string"
],
"target": "/redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1/Outlet.ResetStatistics"
}
}
This is a pass-through field from Redfish that lists the available actions for a Outlet component (if any were found, else if it be omitted entirely).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
#Outlet.PowerControl | object | false | none | none |
» PowerControl@Redfish.AllowableValues | [string] | false | none | List of allowable PowerControl Redfish Action types |
» target | string | false | none | target URI for Redfish Action |
#Outlet.ResetBreaker | object | false | none | none |
» ResetBreaker@Redfish.AllowableValues | [string] | false | none | List of allowable ResetBreaker Redfish Action types |
» target | string | false | none | target URI for Redfish Action |
#Outlet.ResetStatistics | object | false | none | none |
» ResetStatistics@Redfish.AllowableValues | [string] | false | none | List of allowable ResetStatistics Redfish Action types |
» target | string | false | none | target URI for Redfish Action |
{
"ID": "string",
"Message": "string",
"Flag": "OK"
}
TODO This is a general message scheme meant to replace and generalize old HSS error codes. Largely TBD placeholder.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ID | string | false | none | Formal, machine readable, name for message. |
Message | string | false | none | Human readable description of message. |
Flag | HMSFlag.1.0.0 | false | none | This property indicates the state flag of the underlying component. |
{
"RedfishId": 1,
"@odata.id": "/redfish/v1/{Chassis/Managers/Systems}/{Id}/EthernetInterfaces/1",
"Description": "Integrated NIC 1",
"FQDN": "string",
"Hostname": "string",
"InterfaceEnabled": true,
"MACAddress": "ae:12:ce:7a:aa:99",
"PermanentMACAddress": "ae:12:ce:7a:aa:99"
}
This is a summary info for one ordinary Ethernet NIC (i.e. not on HSN). These fields are all passed through from a Redfish EthernetInterface object.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
RedfishId | string | false | read-only | The Redfish ‘Id’ field for the interface. |
@odata.id | string | false | read-only | This is the relative path to the EthernetInterface via the Redfish entry point. (i.e. the @odata.id field). |
Description | string | false | read-only | The Redfish ‘Description’ field for the interface. |
FQDN | string | false | read-only | The Redfish ‘FQDN’ of the interface. This may or may not be set and is not necessarily the same as the FQDN of the ComponentEndpoint. |
Hostname | string | false | read-only | The Redfish ‘Hostname field’ for the interface. This may or may not be set and is not necessarily the same as the Hostname of the ComponentEndpoint. |
InterfaceEnabled | boolean | false | read-only | The Redfish ‘InterfaceEnabled’ field if provided by Redfish, else it will be omitted. |
MACAddress | string | false | none | The Redfish ‘MacAddress’ field for the interface. This should normally be set but is not necessarily the same as the MacAddr of the ComponentEndpoint (as there may be multiple interfaces). |
PermanentMACAddress | string | false | none | The Redfish ‘PermanentMacAddress’ field for the interface. This may or may not be set and is not necessarily the same as the MacAddr of the ComponentEndpoint (as there may be multiple interfaces). |
{
"Name": "Node Power Control",
"PowerCapacityWatts": 900,
"OEM": {
"Cray": {
"PowerIdleWatts": 900,
"PowerLimit": {
"Min": 350,
"Max": 850
},
"PowerResetWatts": 250
}
},
"RelatedItem": [
{
"@odata.id": "/redfish/v1/Chassis/Node0/Power#/PowerControl/Accelerator0"
}
]
}
This is the power control info for the node. These fields are all passed through from a Redfish PowerControl object.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Name of the power control interface. |
PowerCapacityWatts | number | false | read-only | The total amount of power available to the chassis for allocation. This may the power supply capacity, or power budget assigned to the chassis from an up-stream chassis. |
OEM | object | false | read-only | This is the manufacturer/provider specific extension moniker used to divide the Oem object into sections. |
» Cray | object | false | read-only | This is the manufacturer/provider specific extension moniker used to divide the Oem object into sections. |
»» PowerIdleWatts | number | false | read-only | The total amount of power available to the chassis for allocation. This may the power supply capacity, or power budget assigned to the chassis from an up-stream chassis. |
»» PowerLimit | object | false | read-only | Power limit status and configuration information for this chassis. |
»»» Min | number | false | read-only | The minimum allowed value for a PowerLimit’s LimitInWatts. This is the estimated lowest value (most restrictive) power cap that can be achieved by the associated PowerControl resource. |
»»» Max | number | false | read-only | The maximum allowed value for a PowerLimit’s LimitInWatts. This is the estimated highest value (least restrictive) power cap that can be achieved by the associated PowerControl resource. Note that the actual maximum allowed LimitInWatts is the lesser of PowerLimit.Max or PowerControl.PowerAllocatedWatts. |
»» PowerResetWatts | number | false | read-only | Typical power consumption during ComputerSystem.ResetAction “On” operation. |
RelatedItem | [object] | false | read-only | The ID(s) of the resources associated with this Power Limit. |
» @odata.id | string | false | read-only | An ID of the resource associated with this Power Limit. |
"string"
Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory,
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | Uniquely identifies a piece of hardware by a serial-number like identifier that is globally unique within the hardware inventory, |
"X86"
This is the basic architecture of the component so the proper software can be selected and so on.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is the basic architecture of the component so the proper software can be selected and so on. |
Property | Value |
---|---|
anonymous | X86 |
anonymous | ARM |
anonymous | Other |
"River"
This is the HSM hardware class of the component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is the HSM hardware class of the component. |
Property | Value |
---|---|
anonymous | River |
anonymous | Mountain |
anonymous | Hill |
"OK"
This property indicates the state flag of the underlying component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This property indicates the state flag of the underlying component. |
Property | Value |
---|---|
anonymous | OK |
anonymous | Warning |
anonymous | Alert |
anonymous | Locked |
"Compute"
This is a possibly reconfigurable role for a component, especially a node. Valid values are:
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is a possibly reconfigurable role for a component, especially a node. Valid values are: - Compute - Service - System - Application - Storage - Management Additional valid values may be added via configuration file. See the results of ‘GET /service/values/role’ for the complete list. |
"Worker"
This is a possibly reconfigurable subrole for a component, especially a node. Valid values are:
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is a possibly reconfigurable subrole for a component, especially a node. Valid values are: - Master - Worker - Storage Additional valid values may be added via configuration file. See the results of ‘GET /service/values/subrole’ for the complete list. |
"Ready"
This property indicates the state of the underlying component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This property indicates the state of the underlying component. |
Property | Value |
---|---|
anonymous | Unknown |
anonymous | Empty |
anonymous | Populated |
anonymous | Off |
anonymous | On |
anonymous | Standby |
anonymous | Halt |
anonymous | Ready |
"Node"
This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | This is the HMS component type category. It has a particular xname format and represents the kind of component that can occupy that location. Not to be confused with RedfishType which is Redfish specific and only used when providing Redfish endpoint data from discovery. |
Property | Value |
---|---|
anonymous | CDU |
anonymous | CabinetCDU |
anonymous | CabinetPDU |
anonymous | CabinetPDUOutlet |
anonymous | CabinetPDUPowerConnector |
anonymous | CabinetPDUController |
anonymous | Cabinet |
anonymous | Chassis |
anonymous | ChassisBMC |
anonymous | CMMRectifier |
anonymous | CMMFpga |
anonymous | CEC |
anonymous | ComputeModule |
anonymous | RouterModule |
anonymous | NodeBMC |
anonymous | NodeEnclosure |
anonymous | NodeEnclosurePowerSupply |
anonymous | HSNBoard |
anonymous | MgmtSwitch |
anonymous | MgmtHLSwitch |
anonymous | CDUMgmtSwitch |
anonymous | Node |
anonymous | Processor |
anonymous | Drive |
anonymous | StorageGroup |
anonymous | NodeNIC |
anonymous | Memory |
anonymous | NodeAccel |
anonymous | NodeAccelRiser |
anonymous | NodeFpga |
anonymous | HSNAsic |
anonymous | RouterFpga |
anonymous | RouterBMC |
anonymous | HSNLink |
anonymous | HSNConnector |
anonymous | INVALID |
"Sling"
This is the type of high speed network the component is connected to, if it is an applicable component type and the interface is present, or the type of the system HSN.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is the type of high speed network the component is connected to, if it is an applicable component type and the interface is present, or the type of the system HSN. |
Property | Value |
---|---|
anonymous | Sling |
anonymous | Infiniband |
anonymous | Ethernet |
anonymous | OEM |
anonymous | None |
"0-24"
NID range values to query matching components, e.g. “0-24”. Supply only a single range, more can be given in an array of these values.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | NID range values to query matching components, e.g. “0-24”. Supply only a single range, more can be given in an array of these values. |
[
2313746,
11484946
]
A collection of HSN NIC addresses in string form.
None
"/redfish/v1/Systems/System.Embedded.1"
This is the path (relative to a Redfish endpoint) of a particular Redfish resource, e.g. /Redfish/v1/Systems/System.Embedded.1
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | This is the path (relative to a Redfish endpoint) of a particular Redfish resource, e.g. /Redfish/v1/Systems/System.Embedded.1 |
{
"type": "about:blank",
"detail": "Detail about this specific problem occurrence. See RFC7807",
"instance": "",
"status": 400,
"title": "Description of HTTP Status code, e.g. 400"
}
RFC 7807 compliant error payload. All fields are optional except the ’type’ field.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string | true | none | none |
detail | string | false | none | none |
instance | string | false | none | none |
status | number(int32) | false | none | none |
title | string | false | none | none |
"ComputerSystem"
This is the Redfish object type, not to be confused with the HMS component type.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | This is the Redfish object type, not to be confused with the HMS component type. |
Property | Value |
---|---|
anonymous | Chassis |
anonymous | ComputerSystem |
anonymous | EthernetInterface |
anonymous | Manager |
anonymous | Memory |
anonymous | Processor |
anonymous | Drive |
anonymous | PowerSupply |
anonymous | AccountService |
anonymous | EventService |
anonymous | LogService |
anonymous | SessionService |
anonymous | TaskService |
anonymous | UpdateService |
"Physical"
This is the type corresponding to the Redfish object type, i.e. the ChassisType field, SystemType, ManagerType fields. We only use these three types to create ComponentEndpoints for now.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | This is the type corresponding to the Redfish object type, i.e. the ChassisType field, SystemType, ManagerType fields. We only use these three types to create ComponentEndpoints for now. |
Property | Value |
---|---|
anonymous | Rack |
anonymous | Blade |
anonymous | Enclosure |
anonymous | StandAlone |
anonymous | RackMount |
anonymous | Card |
anonymous | Cartridge |
anonymous | Row |
anonymous | Pod |
anonymous | Expansion |
anonymous | Sidecar |
anonymous | Zone |
anonymous | Sled |
anonymous | Shelf |
anonymous | Drawer |
anonymous | Module |
anonymous | Component |
anonymous | Other |
anonymous | Physical |
anonymous | Virtual |
anonymous | OS |
anonymous | PhysicallyPartitioned |
anonymous | VirtuallyPartitioned |
anonymous | ManagementController |
anonymous | EnclosureManager |
anonymous | BMC |
anonymous | RackManager |
anonymous | AuxiliaryController |
"resource_name1"
Acceptable format for certain user-requested string identifiers.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Acceptable format for certain user-requested string identifiers. |
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ResourceURI | string | false | none | none |
{
"Name": "(Type of Object) Collection",
"Members": [
{
"ResourceURI": "/hsm/v2/API_TYPE/OBJECT_TYPE/OBJECT_ID"
}
],
"MemberCount": 0
}
A ResourceURI is like an odata.id, it provides a path to a resource from the API root, such that when a GET is performed, the corresponding object is returned. It does not imply other odata functionality. This is a collection of such IDs, of a single base type, grouped together for some purpose.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
Name | string | false | read-only | Should describe the collection, though the type of resources the links correspond to should also be inferred from the context in which the collection was obtained. |
Members | [ResourceURI.1.0.0] | false | read-only | An array of ResourceIds. |
MemberCount | number(int32) | false | read-only | Number of ResourceURIs in the collection |
{
"code": "string",
"message": "string"
}
This is a simple CAPMC-like response, intended mainly for non-error messages. For client errors, we now use RFC7807 responses.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
code | string | true | none | none |
message | string | true | none | none |
"bf9362ad-b29c-40ed-9881-18a5dba3a26b"
This is a universally unique identifier i.e. UUID in the canonical format provided by Redfish to identify endpoints and services. If this is the UUID of a RedfishEndpoint, it should be the UUID broadcast by SSDP, if applicable.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | This is a universally unique identifier i.e. UUID in the canonical format provided by Redfish to identify endpoints and services. If this is the UUID of a RedfishEndpoint, it should be the UUID broadcast by SSDP, if applicable. |
"x0c0s0b0n0"
Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. |
"x0c0s1b0n0"
Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is the non-readOnly version for writable component lists. |
"x0c0s0b0"
Uniquely identifies the component by its physical location (xname). This is identical to a normal XName, but specifies a case where a BMC or other controller type is expected.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Uniquely identifies the component by its physical location (xname). This is identical to a normal XName, but specifies a case where a BMC or other controller type is expected. |
"x0c0s0b0n0"
Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is identical to XName except that it is not read-only which would prevent it from being a required parameter in query operations in Swagger 2.0. These operations do not actually write the XName, merely using at a selector to do bulk writes of multiple records, so this is fine.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Uniquely identifies the component by its physical location (xname). There are formatting rules depending on the matching HMSType. This is identical to XName except that it is not read-only which would prevent it from being a required parameter in query operations in Swagger 2.0. These operations do not actually write the XName, merely using at a selector to do bulk writes of multiple records, so this is fine. |
"p1.2"
This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input. |
"s0"
This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input, or else a parent component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is an ordinary xname, but one where only a partition (hard:soft) or the system alias (s0) will be expected as valid input, or else a parent component. |