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 Firmware Action Service (FAS) provides a common interface for managing the firmware versions of hardware in a system via Redfish. FAS tracks and performs actions like upgrade, downgrade, create, or restore snapshots for system firmware. FAS processes an image list, which is a JSON file containing firmware versions for each component on a node.
The firmware RPM’s are provided by HPE and installed during installation. The firmware RPM contains the firmware image and the image list. FAS uses the cray-fas-loader (Kubernetes job) to upload firmware images from the RPMs (stored in Nexus) to the artifact repository (S3) and to create the image list in FAS during installation. Note that FAS is a successor to FUS (firmware update service) that was available with earlier versions and offers several enhancements over FUS.
Maintain the image list. Use this resource to update, replace, or return the image list.
Return status and version information for the Firmware Action Service itself.
Initiate a firmware action. An action is a collection of operations initiated by user request to update the firmware images on a set of hardware. Example: Update the Gigabyte BMC targets to the latest version.
Stores current version information for all nodes or restores targets to the stored version level. A snapshot is a point-in-time record of what firmware images were running on the system (a device’s targets), constrained by user defined parameters (xname, model/manufacturer, etc). Snapshots can be used to restore the system back to specific firmware versions.
Before updating firmware, administrator must consider firmware dependencies between different components and determine the update sequence. For example, firmware of one component may need to be updated before firmware for another component can be updated. Upgrade/downgrade/set firmware to an explicit version for all components on the node identified by xname. Upon success, the string response contains an action ID which can be used to query the status of the firmware action. For example, the response to a successful POST /actions provides actionID:
{"actionID": "fcac1eec-e93b-4549-90aa-6a59fda0f4c6",
"overrideDryrun": true,
}
The actionID is used to submit a request for the status of the action:
GET .../v1/actions/fcac1eec-e93b-4549-90aa-6a59fda0f4c6
Dry run helps to determine what firmware can be updated for all components on the node identified by xname. You need to enter values like xname, version etc. in a JSON payload. Ensure that the overrideDryrun parameter is set to false (default value) so that the dry run occurs.
Retrieve information for a specific action ID.
Retrieve status for a specific action ID.
Retrieve details for a specific action ID.
Retrieve detailed information for a specific operationID.
You can create a snapshot to record the firmware versions for targets on specific devices. Upon success, the response includes the snapshot name.
Retrieve details of the snapshot that you created. Retrieve details about the specific snapshot by providing the snapshot name. In the response body, look under devices > targets > imageID and check the imageID. Ensure that the imageID is non-zero. Note that if imageID is a string of zeros like “00000000-0000-0000-0000-000000000000”, it implies that there is no image associated with this snapshot. Restoring this snapshot does not lead to any results as there is no image to restore.
Use this API to restore an existing snapshot by replacing selected components (device + target) with the stored firmware version. Enter the snapshot name as a path parameter. Upon success, the string response contains an action ID which can be used to query the status of the restore.
Using the response from the update, retrieve status of restore for a specific action ID.
FAS receives information from the Hardware State Manager (HSM) for each xname.
Base URLs:
Code samples
GET https://api-gw-service-nmn.local/apis/fas/v1/actions 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/fas/v1/actions \
-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/fas/v1/actions', 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/fas/v1/actions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /actions
Retrieve all firmware action sets with summary information
Retrieve all valid action IDs along with start time and end time for completed and in-progress actions.
Example responses
200 Response
{
"actions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"overrideDryrun": true,
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"operationCounts": {
"total": 100,
"initial": 0,
"configured": 0,
"blocked": 0,
"needsVerified": 0,
"verifying": 0,
"inProgress": 32,
"failed": 10,
"success": 58,
"noSolution": 4,
"noOperation": 6,
"aborted": 0,
"unknown": 0
},
"description": "string",
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ActionSummarys |
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/fas/v1/actions 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/fas/v1/actions \
-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/fas/v1/actions', 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/fas/v1/actions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /actions
Update firmware on the system
Perform a firmware action across the system. Upon success, the string response contains an action ID which can be used to query the status of the update.
For example, the response to a successful POST /actions is the following: {“actionID”: “fcac1eec-e93b-4549-90aa-6a59fda0f4c6”, “overrideDryrun”: true}, actionID is the ID to reference the action; performing a GET …/v1/actions/fcac1eec-e93b-4549-90aa-6a59fda0f4c6 will return status information on the action and its collection of operations
The parameters are logically AND’d. The parameters are broken into: location, type, level. The command parameters will FORCE an action or override a dryrun.
stateComponentFilter: -> determines the xnames to run on
inventoryHardwareFilter: -> determines the xnames to run on by comparison of the ’type’ information
targetFilter: -> determines the targets to run on
imageFilter: -> can specify a specific image UUID to use.
commands:
default
is the default tag.Body parameter
{
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"imageFilter": {
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
},
"command": {
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ActionParameters | true | Optional description in Markdown |
Example responses
201 Response
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"overrideDryrun": true
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Created | ActionID |
404 | Not Found | action set not found | 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/fas/v1/actions/{actionID} 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/fas/v1/actions/{actionID} \
-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/fas/v1/actions/{actionID}', 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/fas/v1/actions/{actionID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /actions/{actionID}
Retrieve detailed information for a firmware action set
Retrieve detailed information for a firmware action set specified by actionID.
Name | In | Type | Required | Description |
---|---|---|---|---|
actionID | path | string(uuid) | true | none |
Example responses
200 Response
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"description": "string",
"operationSummary": {
"initial": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"configured": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"blocked": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"needsVerified": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"verifying": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"inProgress": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"failed": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"success": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"noSolution": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"noOperation": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"aborted": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"unknown": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
]
},
"overrideDryrun": true,
"parameters": {
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"imageFilter": {
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
},
"command": {
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
},
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Action |
404 | Not Found | action set not found | 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/fas/v1/actions/{actionID} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/error
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/fas/v1/actions/{actionID} \
-H 'Accept: application/error' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/error',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/fas/v1/actions/{actionID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/error"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/fas/v1/actions/{actionID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /actions/{actionID}
Delete all information about a completed firmware action set
Delete all information about a completed firmware action set.
Name | In | Type | Required | Description |
---|---|---|---|---|
actionID | path | string(uuid) | true | none |
Example responses
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Deleted - no content | None |
400 | Bad Request | cannot delete a running action | Problem7807 |
404 | Not Found | action set not found | 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/fas/v1/actions/{actionID}/instance 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/fas/v1/actions/{actionID}/instance \
-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/fas/v1/actions/{actionID}/instance', 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/fas/v1/actions/{actionID}/instance", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /actions/{actionID}/instance
Abort a running firmware action set
Abort a running firmware action set. Stops all actions in progress (will not rollback)
Name | In | Type | Required | Description |
---|---|---|---|---|
actionID | path | string(uuid) | true | none |
Example responses
404 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 | Action already finalized | None |
202 | Accepted | Aborting action | None |
404 | Not Found | action set not found | 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/fas/v1/actions/{actionID}/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/fas/v1/actions/{actionID}/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/fas/v1/actions/{actionID}/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/fas/v1/actions/{actionID}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /actions/{actionID}/status
Retrieve summary information of a firmware action set
Retrieve summary information of a firmware action set.
Name | In | Type | Required | Description |
---|---|---|---|---|
actionID | path | string(uuid) | true | none |
Example responses
200 Response
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"overrideDryrun": true,
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"operationCounts": {
"total": 100,
"initial": 0,
"configured": 0,
"blocked": 0,
"needsVerified": 0,
"verifying": 0,
"inProgress": 32,
"failed": 10,
"success": 58,
"noSolution": 4,
"noOperation": 6,
"aborted": 0,
"unknown": 0
},
"description": "string",
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ActionSummary |
404 | Not Found | action set not found | 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/fas/v1/actions/{actionID}/operations 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/fas/v1/actions/{actionID}/operations \
-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/fas/v1/actions/{actionID}/operations', 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/fas/v1/actions/{actionID}/operations", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /actions/{actionID}/operations
Retrieve detailed information of a firmware action set
Retrieve detailed information of a firmware action set.
Name | In | Type | Required | Description |
---|---|---|---|---|
actionID | path | string(uuid) | true | none |
Example responses
200 Response
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"description": "string",
"operationSummary": {
"initial": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"configured": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"blocked": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"needsVerified": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"verifying": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"inProgress": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"failed": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"success": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"noSolution": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"noOperation": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"aborted": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"unknown": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
]
},
"overrideDryrun": true,
"parameters": {
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"imageFilter": {
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
},
"command": {
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
},
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ActionDetail |
404 | Not Found | action set not found | 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/fas/v1/actions/{actionID}/operations/{operationID} 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/fas/v1/actions/{actionID}/operations/{operationID} \
-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/fas/v1/actions/{actionID}/operations/{operationID}', 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/fas/v1/actions/{actionID}/operations/{operationID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /actions/{actionID}/operations/{operationID}
Retrieve detailed information of a firmware operation.
Retrieve detailed information of a firmware operation.
Name | In | Type | Required | Description |
---|---|---|---|---|
actionID | path | string(uuid) | true | none |
operationID | path | string(uuid) | true | none |
Example responses
200 Response
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Operation |
404 | Not Found | action set not found | 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/fas/v1/operations/{operationID} 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/fas/v1/operations/{operationID} \
-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/fas/v1/operations/{operationID}', 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/fas/v1/operations/{operationID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /operations/{operationID}
Retrieve detailed information of a firmware operation.
Retrieve detailed information of a firmware operation.
Name | In | Type | Required | Description |
---|---|---|---|---|
operationID | path | string(uuid) | true | none |
Example responses
200 Response
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Operation |
404 | Not Found | operation not found | 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/fas/v1/images 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/fas/v1/images \
-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/fas/v1/images', 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/fas/v1/images", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /images
Create a new image record
Create a new image record
Body parameter
{
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
[
"c5000",
"c5001"
]
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tctp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | ImageCreate | true | a firmware image record |
Example responses
200 Response
{
"imageID": "00000000-0000-0000-0000-000000000000"
}
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ImageID |
400 | Bad Request | Bad request | Problem7807 |
409 | Conflict | Image Record Already Exists | 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/fas/v1/images 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/fas/v1/images \
-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/fas/v1/images', 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/fas/v1/images", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /images
Retrieve a list of images known to the system
Retrieve a list of images that are known to the system.
Example responses
200 Response
{
"images": [
{
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"createTime": "2019-08-24T14:15:22Z",
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
"c5000"
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tftp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ImageList |
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/fas/v1/images/{imageID} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/error
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/fas/v1/images/{imageID} \
-H 'Content-Type: application/json' \
-H 'Accept: application/error' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/error',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/fas/v1/images/{imageID}', 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/error"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/fas/v1/images/{imageID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /images/{imageID}
Update the image record
Modify or update an existing image record.
Body parameter
{
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
[
"c5000",
"c5001"
]
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tctp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
imageID | path | string(uuid) | true | none |
body | body | ImageCreate | true | image record |
Example responses
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Updated | None |
201 | Created | Created | None |
400 | Bad Request | Bad Request | 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/fas/v1/images/{imageID} 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/fas/v1/images/{imageID} \
-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/fas/v1/images/{imageID}', 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/fas/v1/images/{imageID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /images/{imageID}
Retrieve the image record
Retrieve the image record that is associated with the imageID.
Name | In | Type | Required | Description |
---|---|---|---|---|
imageID | path | string(uuid) | true | none |
Example responses
200 Response
{
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"createTime": "2019-08-24T14:15:22Z",
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
"c5000"
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tftp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ImageGet |
400 | Bad Request | Bad Request | 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/fas/v1/images/{imageID} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/error
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/fas/v1/images/{imageID} \
-H 'Accept: application/error' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/error',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/fas/v1/images/{imageID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/error"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/fas/v1/images/{imageID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /images/{imageID}
Delete an image record
Deletes an image record from the FAS datastore. Does not delete the actual image from S3.
Name | In | Type | Required | Description |
---|---|---|---|---|
imageID | path | string(uuid) | true | none |
Example responses
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Successful delete | None |
400 | Bad Request | Bad Request | 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/fas/v1/service/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/fas/v1/service/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/fas/v1/service/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/fas/v1/service/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/status
Retrieve service status
Retrieve the status of the Firmware Action Service.
Example responses
200 Response
{
"serviceStatus": "running"
}
500 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ServiceStatus |
500 | Internal Server Error | Internal Server 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/fas/v1/service/status/details 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/fas/v1/service/status/details \
-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/fas/v1/service/status/details', 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/fas/v1/service/status/details", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/status/details
Retrieve service status details
Retrieve the status of the Firmware Action Service. HSM, ETCD, Service Status and Version are returned.
Example responses
200 Response
{
"serviceVersion": "1.2.0",
"serviceStatus": "running",
"hmsStatus": "connected",
"storageStatus": "connected"
}
500 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ServiceStatusDetails |
500 | Internal Server Error | Internal Server 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/fas/v1/service/version 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/fas/v1/service/version \
-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/fas/v1/service/version', 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/fas/v1/service/version", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /service/version
Retrieve the service version
Retrieve the internal version of FAS.
Example responses
200 Response
{
"serviceVersion": "1.2.0"
}
500 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | ServiceVersion |
500 | Internal Server Error | Internal Server 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/fas/v1/snapshots 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/fas/v1/snapshots \
-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/fas/v1/snapshots', 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/fas/v1/snapshots", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /snapshots
Return summary of all stored snapshots
Return summary of all stored snapshots
Example responses
200 Response
{
"snapshots": [
{
"name": "pre_system_upgrade",
"captureTime": "2019-08-24T14:15:22Z",
"expirationTime": "2019-08-24T14:15:22Z",
"ready": false,
"relatedActions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "completed"
}
],
"uniqueDeviceCount": 0
}
]
}
500 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | SnapshotAll |
500 | Internal Server Error | Internal server 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/fas/v1/snapshots 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/fas/v1/snapshots \
-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/fas/v1/snapshots', 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/fas/v1/snapshots", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /snapshots
Create a system snapshot
Records a snapshot of the firmware versions for every target for every device that matches the query parameters.
Body parameter
{
"name": "20200402_all_xnames",
"expirationTime": "2019-08-24T14:15:22Z",
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | SnapshotParameters | true | Optional description in Markdown |
Example responses
201 Response
{
"name": "20200402_all_xnames"
}
409 Response
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | OK | SnapshotID |
409 | Conflict | Duplicate, key already exists | Problem7807 |
Status | Header | Type | Format | Description |
---|---|---|---|---|
201 | Location | string | location of snapshot |
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/fas/v1/snapshots/{snapshotName} 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/fas/v1/snapshots/{snapshotName} \
-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/fas/v1/snapshots/{snapshotName}', 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/fas/v1/snapshots/{snapshotName}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /snapshots/{snapshotName}
Retrieve a snapshot
Retrieve a snapshot of the system
Name | In | Type | Required | Description |
---|---|---|---|---|
snapshotName | path | string | true | none |
Example responses
200 Response
{
"name": "string",
"captureTime": "2019-08-24T14:15:22Z",
"expirationTime": "2019-08-24T14:15:22Z",
"ready": false,
"relatedActions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "completed"
}
],
"devices": [
{
"xname": "x0c0s2b0",
"targets": [
{
"name": "BIOS",
"firmwareVersion": "fw123.8s",
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"error": "string"
}
],
"error": "string"
}
],
"parameters": {
"name": "20200402_all_xnames",
"expirationTime": "2019-08-24T14:15:22Z",
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
}
},
"errors": [
"string"
]
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | Snapshot |
404 | Not Found | Not found | 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/fas/v1/snapshots/{snapshotName} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/error
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/fas/v1/snapshots/{snapshotName} \
-H 'Accept: application/error' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/error',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/fas/v1/snapshots/{snapshotName}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/error"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/fas/v1/snapshots/{snapshotName}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /snapshots/{snapshotName}
Delete a snapshot
Delete a snapshot of the system. Does not delete any firmware images from S3.
Name | In | Type | Required | Description |
---|---|---|---|---|
snapshotName | path | string | true | none |
Example responses
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Successful delete | None |
404 | Not Found | Not found | 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/fas/v1/snapshots/{snapshotName}/restore?confirm=yes HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/fas/v1/snapshots/{snapshotName}/restore?confirm=yes \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/fas/v1/snapshots/{snapshotName}/restore', params={
'confirm': 'yes'
}, 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("POST", "https://api-gw-service-nmn.local/apis/fas/v1/snapshots/{snapshotName}/restore", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /snapshots/{snapshotName}/restore
Restore system snapshot
Restore a snapshot by replacing each component (device + target) with the stored version. Note that you are prompted for a confirmation.
Name | In | Type | Required | Description |
---|---|---|---|---|
snapshotName | path | string | true | none |
overrideDryrun | query | boolean | false | Note that leaving this blank or misspelling true is considered false resulting in a dryrun restore action to be performed. You must specify true to force an actual update |
confirm | query | string | true | none |
timeLimit | query | integer | false | time limit in seconds that any operation for a firmware action may be allowed to attempt to complete. |
Example responses
202 Response
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"overrideDryrun": true
}
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
202 | Accepted | request to restore accepted. Creating firmware action set | ActionID |
400 | Bad Request | Bad Request | Problem7807 |
404 | Not Found | Snapshot name not found | Problem7807 |
Status | Header | Type | Format | Description |
---|---|---|---|---|
202 | Location | string | uuid | actionID of the created firmware action set |
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/fas/v1/loader HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/octet-stream
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/fas/v1/loader \
-H 'Content-Type: application/octet-stream' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/octet-stream',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/fas/v1/loader', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/octet-stream"},
"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/fas/v1/loader", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /loader
Upload a file to be processed by the loader
Upload a file for the loader to add to S3 and create a FAS compatible image record
Body parameter
string
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | string(binary) | false | none |
Example responses
200 Response
{
"loaderRunID": "3b7e76fb-4b2e-45d8-9266-664b8966d691"
}
400 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | LoaderRunID |
400 | Bad Request | Bad Request - No file found | Problem7807 |
415 | Unsupported Media Type | Unsupported Media Type | Problem7807 |
429 | Too Many Requests | Loader busy, try again later | Problem7807 |
500 | Internal Server Error | Internal Server 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/fas/v1/loader 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/fas/v1/loader \
-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/fas/v1/loader', 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/fas/v1/loader", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /loader
Return the loader status and list of loader runs
Return the loader status and list loader runs
Example responses
200 Response
{
"loaderStatus": "busy",
"loaderRunList": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | LoaderStatus |
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/fas/v1/loader/{loaderRunID} 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/fas/v1/loader/{loaderRunID} \
-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/fas/v1/loader/{loaderRunID}', 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/fas/v1/loader/{loaderRunID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /loader/{loaderRunID}
Return the results of a loader run
Return the results of a loader run
Name | In | Type | Required | Description |
---|---|---|---|---|
loaderRunID | path | string(uuid) | true | none |
Example responses
200 Response
{
"loaderRunOutput": [
"string"
]
}
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | LoaderRunOutput |
404 | Not Found | Not found | 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/fas/v1/loader/{loaderRunID} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/error
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/fas/v1/loader/{loaderRunID} \
-H 'Accept: application/error' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/error',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/fas/v1/loader/{loaderRunID}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/error"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/fas/v1/loader/{loaderRunID}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /loader/{loaderRunID}
Delete a loader run
Delete a loader run
Name | In | Type | Required | Description |
---|---|---|---|---|
loaderRunID | path | string(uuid) | true | none |
Example responses
404 Response
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | Successful delete | None |
404 | Not Found | Not found | 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/fas/v1/loader/nexus HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/fas/v1/loader/nexus \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/fas/v1/loader/nexus', 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("POST", "https://api-gw-service-nmn.local/apis/fas/v1/loader/nexus", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /loader/nexus
loader firmware images from the Nexus library
Have the loader read the firmware library from Nexus and add to S3 and create FAS compatible image records
Example responses
200 Response
{
"loaderRunID": "3b7e76fb-4b2e-45d8-9266-664b8966d691"
}
429 Response
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | OK | LoaderRunID |
429 | Too Many Requests | Loader busy, try again later | Problem7807 |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
{
"loaderStatus": "busy",
"loaderRunList": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
loaderStatus | string | false | none | none |
loaderRunList | [string] | false | none | none |
Property | Value |
---|---|
loaderStatus | busy |
loaderStatus | ready |
{
"loaderRunID": "3b7e76fb-4b2e-45d8-9266-664b8966d691"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
loaderRunID | string(uuid) | false | none | none |
{
"loaderRunOutput": [
"string"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
loaderRunOutput | [string] | false | none | none |
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"overrideDryrun": true,
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"operationCounts": {
"total": 100,
"initial": 0,
"configured": 0,
"blocked": 0,
"needsVerified": 0,
"verifying": 0,
"inProgress": 32,
"failed": 10,
"success": 58,
"noSolution": 4,
"noOperation": 6,
"aborted": 0,
"unknown": 0
},
"description": "string",
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
actionID | string(uuid) | false | none | none |
snapshotID | string(uuid) | false | none | none |
overrideDryrun | boolean | false | none | none |
startTime | string(date-time) | false | none | none |
endTime | string(date-time) | false | none | none |
state | string | false | none | The state of the action - new - not yet started configured - configured, but not yet started blocked - configured, but cannot run because another action is executing running - started completed - the action has completed all operations abortSignaled - the action has been instructed to STOP all running operations aborted - the action has stopped all operations |
operationCounts | OperationCounts | false | none | none |
description | string | false | none | none |
blockedBy | [string] | false | none | none |
errors | [string] | false | none | none |
Property | Value |
---|---|
state | new |
state | configure |
state | blocked |
state | running |
state | completed |
state | abortSignaled |
state | aborted |
{
"actions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"overrideDryrun": true,
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"operationCounts": {
"total": 100,
"initial": 0,
"configured": 0,
"blocked": 0,
"needsVerified": 0,
"verifying": 0,
"inProgress": 32,
"failed": 10,
"success": 58,
"noSolution": 4,
"noOperation": 6,
"aborted": 0,
"unknown": 0
},
"description": "string",
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
actions | [ActionSummary] | false | none | none |
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"description": "string",
"operationSummary": {
"initial": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"configured": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"blocked": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"needsVerified": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"verifying": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"inProgress": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"failed": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"success": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"noSolution": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"noOperation": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"aborted": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"unknown": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
]
},
"overrideDryrun": true,
"parameters": {
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"imageFilter": {
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
},
"command": {
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
},
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
actionID | string(uuid) | false | none | none |
snapshotID | string(uuid) | false | none | none |
startTime | string(date-time) | false | none | none |
endTime | string(date-time) | false | none | none |
state | string | false | none | The state of the action - new - not yet started configured - configured, but not yet started blocked - configured, but cannot run because another action is executing running - started completed - the action has completed all operations abortSignaled - the action has been instructed to STOP all running operations aborted - the action has stopped all operations |
description | string | false | none | none |
operationSummary | OperationSummary | false | none | none |
overrideDryrun | boolean | false | none | none |
parameters | ActionParameters | false | none | none |
blockedBy | [string] | false | none | none |
errors | [string] | false | none | none |
Property | Value |
---|---|
state | new |
state | configure |
state | blocked |
state | running |
state | completed |
state | abortSignaled |
state | aborted |
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"snapshotID": "0a404cc5-4bd4-40f5-b698-aa34ab33b3fb",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "running",
"description": "string",
"operationSummary": {
"initial": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"configured": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"blocked": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"needsVerified": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"verifying": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"inProgress": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"failed": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"success": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"noSolution": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"noOperation": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"aborted": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"unknown": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
]
},
"overrideDryrun": true,
"parameters": {
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"imageFilter": {
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
},
"command": {
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
},
"blockedBy": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"errors": [
"string"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
actionID | string(uuid) | false | none | none |
snapshotID | string(uuid) | false | none | none |
startTime | string(date-time) | false | none | none |
endTime | string(date-time) | false | none | none |
state | string | false | none | The state of the action - new - not yet started configured - configured, but not yet started blocked - configured, but cannot run because another action is executing running - started completed - the action has completed all operations abortSignaled - the action has been instructed to STOP all running operations aborted - the action has stopped all operations |
description | string | false | none | none |
operationSummary | OperationDetail | false | none | none |
overrideDryrun | boolean | false | none | none |
parameters | ActionParameters | false | none | none |
blockedBy | [string] | false | none | none |
errors | [string] | false | none | none |
Property | Value |
---|---|
state | new |
state | configure |
state | blocked |
state | running |
state | completed |
state | abortSignaled |
state | aborted |
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"overrideDryrun": true
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
actionID | string(uuid) | false | none | none |
overrideDryrun | boolean | false | none | this field represents if the automatic dryrun was overridden by command. |
{
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"imageFilter": {
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
},
"command": {
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
stateComponentFilter | ActionParameters_StateComponentFilter | false | none | none |
inventoryHardwareFilter | ActionParameters_HardwareFilter | false | none | none |
imageFilter | ActionParameters_ImageFilter | false | none | none |
targetFilter | ActionParameters_TargetFilter | false | none | none |
command | ActionParameters_Command | false | none | none |
{
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
xnames | [string] | false | none | none |
partitions | [string] | false | none | none |
groups | [string] | false | none | none |
deviceTypes | [string] | false | none | none |
{
"manufacturer": "cray",
"model": "c5000"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
manufacturer | string | false | none | none |
model | string | false | none | none |
{
"targets": [
"BIOS",
"BMC"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
targets | [string] | false | none | none |
{
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"overrideImage": true
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
imageID | string(uuid) | false | none | none |
overrideImage | boolean | false | none | Will not check device properties against image properties to ensure valid image. Default is false. |
{
"version": "latest",
"tag": "default",
"overrideDryrun": true,
"restoreNotPossibleOverride": true,
"overwriteSameImage": true,
"timeLimit": 10000,
"description": "update cabinet xxxx"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
version | string | false | none | Go to the latest, earliest semantic version, or explicitly set a specific version as per the imageID. |
tag | string | false | none | none |
overrideDryrun | boolean | false | none | causes the action to be executed instead of simulated. False by default. Checks to see if there are images available to update device firmware as desired. |
restoreNotPossibleOverride | boolean | false | none | Force the operation, even if the fromFirmwareVersion cannot be found. Default to false |
overwriteSameImage | boolean | false | none | Force the operation, even if the ‘fromFirmwareVersion’ and the ’toFirmwareVersion’ are the same. Default to false. |
timeLimit | integer | false | none | time limit for any operation in seconds |
description | string | false | none | none |
Property | Value |
---|---|
version | latest |
version | earliest |
version | explicit |
{
"xname": "x0c0s2b0",
"targets": [
{
"name": "BIOS",
"firmwareVersion": "fw123.8s",
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"error": "string"
}
],
"error": "string"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
xname | string | false | none | none |
targets | [Target] | false | none | none |
error | string | false | none | any error that was encountered while populating device information |
{
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
[
"c5000",
"c5001"
]
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tctp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
deviceType | string | false | none | node type |
manufacturer | string | false | none | none |
models | [string] | false | none | none |
target | string | false | none | node target |
softwareIds | [string] | false | none | none |
tags | [string] | true | none | none |
firmwareVersion | string | true | none | none |
semanticFirmwareVersion | string | true | none | none |
updateURI | string | false | none | where to point the update at |
needManualReboot | boolean | false | none | whether or not FAS needs to initiate a manual reboot after the update command has been issued |
waitTimeBeforeManualRebootSeconds | integer | false | none | amount of time to wait after an update to perform a manual reboot |
waitTimeAfterRebootSeconds | integer | false | none | amount of time to wait after a manual reboot before proceeding to verification step |
pollingSpeedSeconds | integer | false | none | amount of time to wait between requests to the device to avoid overloading it |
forceResetType | string | false | none | the command to issue to the Redfish device to force a reboot |
s3URL | string | true | none | none |
tftpURL | string | false | none | none |
allowableDeviceStates | [string] | false | none | none |
{
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"createTime": "2019-08-24T14:15:22Z",
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
"c5000"
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tftp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
imageID | string(uuid) | false | none | none |
createTime | string(date-time) | false | none | none |
deviceType | string | false | none | node type |
manufacturer | string | false | none | none |
models | [string] | false | none | none |
target | string | true | none | node target |
softwareIds | [string] | false | none | none |
tags | [string] | false | none | none |
firmwareVersion | string | false | none | none |
semanticFirmwareVersion | string | false | none | none |
updateURI | string | false | none | where to point the update at |
needManualReboot | boolean | false | none | whether or not FAS needs to initiate a manual reboot after the update command has been issued |
waitTimeBeforeManualRebootSeconds | integer | false | none | amount of time to wait after an update to perform a manual reboot |
waitTimeAfterRebootSeconds | integer | false | none | amount of time to wait after a manual reboot before proceeding to verification step |
pollingSpeedSeconds | integer | false | none | amount of time to wait between requests to the device to avoid overloading it |
forceResetType | string | false | none | the command to issue to the Redfish device to force a reboot |
s3URL | string | false | none | none |
tftpURL | string | false | none | none |
allowableDeviceStates | [string] | false | none | none |
{
"imageID": "00000000-0000-0000-0000-000000000000"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
imageID | string(uuid) | false | none | none |
{
"images": [
{
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"createTime": "2019-08-24T14:15:22Z",
"deviceType": "nodeBMC",
"manufacturer": "cray",
"models": [
"c5000"
],
"target": "BIOS",
"softwareIds": [
"string"
],
"tags": [
[
"recovery",
"default"
]
],
"firmwareVersion": "f1.123.24xz",
"semanticFirmwareVersion": "1.2.252",
"updateURI": "string",
"needManualReboot": true,
"waitTimeBeforeManualRebootSeconds": 0,
"waitTimeAfterRebootSeconds": 0,
"pollingSpeedSeconds": 0,
"forceResetType": "string",
"s3URL": "s3://firmware/f1.1123.24.xz.iso",
"tftpURL": "tftp://f1.1123.24.xz.iso",
"allowableDeviceStates": [
"ON"
]
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
images | array | false | none | none |
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
operationID | string(uuid) | false | none | none |
actionID | string(uuid) | false | none | none |
startTime | string(date-time) | false | none | none |
endTime | string(date-time) | false | none | none |
state | string | false | none | The state of the operation - initial - not yet started configured - configured, but not yet started blocked - cannot run because another operation is blocking this inProgress - operation started - sent update command needsVerified - operation was sent update command, waiting for finish to verify verifying - operation verifying operation aborted - operation was aborted noOperation - operation has nothing to do - already at firmware level noSolution - operation could not find a firmware to flash succeeded - operation completed successfully failed - operation failed |
error | string | false | none | none |
xname | string | false | none | none |
deviceType | string | false | none | none |
target | string | false | none | none |
targetName | string | false | none | none |
manufacturer | string | false | none | none |
model | string | false | none | none |
softwareId | string | false | none | none |
fromFirmwareVersion | string | false | none | none |
fromSemanticFirmwareVersion | string | false | none | none |
fromImageURL | string | false | none | none |
fromTag | string | false | none | none |
toFirmwareVersion | string | false | none | none |
toSemanticFirmwareVersion | string | false | none | none |
toImageURL | string | false | none | none |
toTag | string | false | none | none |
Property | Value |
---|---|
state | initial |
state | configured |
state | blocked |
state | inProgress |
state | needsVerified |
state | verifying |
state | abort |
state | noOperation |
state | noSolution |
state | succeeded |
state | failed |
{
"total": 100,
"initial": 0,
"configured": 0,
"blocked": 0,
"needsVerified": 0,
"verifying": 0,
"inProgress": 32,
"failed": 10,
"success": 58,
"noSolution": 4,
"noOperation": 6,
"aborted": 0,
"unknown": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
total | integer | false | none | total count of all operations |
initial | integer | false | none | count of operations that have not yet been configured |
configured | integer | false | none | count of operations that have been configured but not started |
blocked | integer | false | none | count of operations that have been configured, but cannot yet launch because another operation is pending on the same xname |
needsVerified | integer | false | none | count of operations that have been started, but need final verification to determine if the operation was successful |
verifying | integer | false | none | count of operations that have started verification, but are not finished verification. |
inProgress | integer | false | none | count of operations that have been started, but have not reach the verification stage. |
failed | integer | false | none | count of operations that have failed to complete firmware task |
success | integer | false | none | count of operations that have succeeded in completing firmware task |
noSolution | integer | false | none | count of operations that have no viable solution to satisfy the request. This is usually because no suitable image exists. |
noOperation | integer | false | none | count of operations that do not need to be executed, because the desired end state is already achieved. |
aborted | integer | false | none | count of operations that have been aborted. It is indeterminate if their firmware task was executed. |
unknown | integer | false | none | count of unknown states -> should not be present. |
{
"initial": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"configured": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"blocked": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"needsVerified": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"verifying": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"inProgress": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"failed": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"success": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"noSolution": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"noOperation": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"aborted": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
],
"unknown": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
initial | [OperationKey] | false | none | count of operations that have not yet been configured |
configured | [OperationKey] | false | none | count of operations that have been configured but not started |
blocked | [OperationKey] | false | none | count of operations that have been configured, but cannot yet launch because another operation is pending on the same xname |
needsVerified | [OperationKey] | false | none | count of operations that have been started, but need final verification to determine if the operation was successful |
verifying | [OperationKey] | false | none | count of operations that have started verification, but are not finished verification. |
inProgress | [OperationKey] | false | none | count of operations that have been started, but have not reach the verification stage. |
failed | [OperationKey] | false | none | count of operations that have failed to complete firmware task |
success | [OperationKey] | false | none | count of operations that have succeeded in completing firmware task |
noSolution | [OperationKey] | false | none | count of operations that have no viable solution to satisfy the request. This is usually because no suitable image exists. |
noOperation | [OperationKey] | false | none | count of operations that do not need to be executed, because the desired end state is already achieved. |
aborted | [OperationKey] | false | none | count of operations that have been aborted. It is indeterminate if their firmware task was executed. |
unknown | [OperationKey] | false | none | count of unknown states -> should not be present. |
{
"initial": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"configured": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"blocked": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"needsVerified": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"verifying": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"inProgress": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"failed": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"success": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"noSolution": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"noOperation": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"aborted": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
],
"unknown": [
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "initial",
"error": "string",
"xname": "x0c0s2b0",
"deviceType": "nodeBMC",
"target": "bmc",
"targetName": "bmc",
"manufacturer": "cray",
"model": "c5000",
"softwareId": "string",
"fromFirmwareVersion": "fw123.873US",
"fromSemanticFirmwareVersion": "1.25.10",
"fromImageURL": "s3://fw-update/01ca4727-27d7-43a6-9c5b-f9dfcf805ded/filename.bin",
"fromTag": "default",
"toFirmwareVersion": "fw456",
"toSemanticFirmwareVersion": "1.35.0",
"toImageURL": "s3://fw-update/3586af8d-0fba-4bfa-8fc5-782764d335e8/filename-1.0.bin",
"toTag": "recovery"
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
initial | [Operation] | false | none | count of operations that have not yet been configured |
configured | [Operation] | false | none | count of operations that have been configured but not started |
blocked | [Operation] | false | none | count of operations that have been configured, but cannot yet launch because another operation is pending on the same xname |
needsVerified | [Operation] | false | none | count of operations that have been started, but need final verification to determine if the operation was successful |
verifying | [Operation] | false | none | count of operations that have started verification, but are not finished verification. |
inProgress | [Operation] | false | none | count of operations that have been started, but have not reach the verification stage. |
failed | [Operation] | false | none | count of operations that have failed to complete firmware task |
success | [Operation] | false | none | count of operations that have succeeded in completing firmware task |
noSolution | [Operation] | false | none | count of operations that have no viable solution to satisfy the request. This is usually because no suitable image exists. |
noOperation | [Operation] | false | none | count of operations that do not need to be executed, because the desired end state is already achieved. |
aborted | [Operation] | false | none | count of operations that have been aborted. It is indeterminate if their firmware task was executed. |
unknown | [Operation] | false | none | count of unknown states -> should not be present. |
{
"operationID": "304f12c1-106a-4031-8993-97a9e8ea25f4",
"xname": "string",
"target": "string",
"targetName": "string",
"fromFirmwareVersion": "string",
"stateHelper": "string"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
operationID | string(uuid) | false | none | none |
xname | string | false | none | none |
target | string | false | none | none |
targetName | string | false | none | none |
fromFirmwareVersion | string | false | none | the currently identified firmware version on the xname/target before attempting an update. May be empty. |
stateHelper | string | false | none | a helper string that might further explain the current state. |
{
"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 |
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "completed"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
actionID | string(uuid) | false | none | none |
startTime | string(date-time) | false | none | none |
endTime | string(date-time) | false | none | none |
state | string | false | none | The state of the action - new - not yet started configured - configured, but not yet started blocked - configured, but cannot run because another action is executing running - started completed - the action has completed all operations abortSignaled - the action has been instructed to STOP all running operations aborted - the action has stopped all operations |
Property | Value |
---|---|
state | new |
state | configure |
state | blocked |
state | running |
state | completed |
state | abortSignaled |
state | aborted |
{
"serviceStatus": "running"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
serviceStatus | string | false | none | none |
{
"serviceVersion": "1.2.0",
"serviceStatus": "running",
"hmsStatus": "connected",
"storageStatus": "connected"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
serviceVersion | string | false | none | none |
serviceStatus | string | false | none | none |
hmsStatus | string | false | none | none |
storageStatus | string | false | none | none |
{
"serviceVersion": "1.2.0"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
serviceVersion | string | false | none | none |
{
"name": "string",
"captureTime": "2019-08-24T14:15:22Z",
"expirationTime": "2019-08-24T14:15:22Z",
"ready": false,
"relatedActions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "completed"
}
],
"devices": [
{
"xname": "x0c0s2b0",
"targets": [
{
"name": "BIOS",
"firmwareVersion": "fw123.8s",
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"error": "string"
}
],
"error": "string"
}
],
"parameters": {
"name": "20200402_all_xnames",
"expirationTime": "2019-08-24T14:15:22Z",
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
}
},
"errors": [
"string"
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | none |
captureTime | string(date-time) | false | none | none |
expirationTime | string(date-time) | false | none | none |
ready | boolean | false | none | whether or not the snapshot has completed |
relatedActions | [RelatedSnapshotActions] | false | none | none |
devices | [DeviceFirmware] | false | none | none |
parameters | SnapshotParameters | false | none | none |
errors | [string] | false | none | none |
{
"snapshots": [
{
"name": "pre_system_upgrade",
"captureTime": "2019-08-24T14:15:22Z",
"expirationTime": "2019-08-24T14:15:22Z",
"ready": false,
"relatedActions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "completed"
}
],
"uniqueDeviceCount": 0
}
]
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
snapshots | [SnapshotSummary] | false | none | none |
{
"name": "20200402_all_xnames"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | none |
{
"name": "20200402_all_xnames",
"expirationTime": "2019-08-24T14:15:22Z",
"stateComponentFilter": {
"xnames": [
"x0c0s0b0",
"x0c0s2b0"
],
"partitions": [
"p1"
],
"groups": [
"red",
"blue"
],
"deviceTypes": [
"nodeBMC"
]
},
"inventoryHardwareFilter": {
"manufacturer": "cray",
"model": "c5000"
},
"targetFilter": {
"targets": [
"BIOS",
"BMC"
]
}
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | none |
expirationTime | string(date-time) | false | none | time at which the snapshot expires and is automatically deleted |
stateComponentFilter | ActionParameters_StateComponentFilter | false | none | none |
inventoryHardwareFilter | ActionParameters_HardwareFilter | false | none | none |
targetFilter | ActionParameters_TargetFilter | false | none | none |
{
"name": "pre_system_upgrade",
"captureTime": "2019-08-24T14:15:22Z",
"expirationTime": "2019-08-24T14:15:22Z",
"ready": false,
"relatedActions": [
{
"actionID": "4a156b6a-0d73-4d7b-92f3-7bc07d13205f",
"startTime": "2019-08-24T14:15:22Z",
"endTime": "2019-08-24T14:15:22Z",
"state": "completed"
}
],
"uniqueDeviceCount": 0
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | none |
captureTime | string(date-time) | false | none | none |
expirationTime | string(date-time) | false | none | none |
ready | boolean | false | none | whether or not the snapshot has completed |
relatedActions | [RelatedSnapshotActions] | false | none | none |
uniqueDeviceCount | integer | false | none | count of unique xnames associated with the snapshot |
{
"name": "BIOS",
"firmwareVersion": "fw123.8s",
"imageID": "bbdcb050-2e05-43cb-812a-e1296cd0c01a",
"error": "string"
}
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | none |
firmwareVersion | string | false | none | none |
imageID | string(uuid) | false | none | none |
error | string | false | none | any error that was encountered while populating target information |