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 Boot Orchestration Service (BOS) provides coordinated provisioning actions over defined hardware sets to enable boot, reboot, shutdown, configuration and staging for specified hardware subsets. These provisioning actions apply state through numerous system management APIs at the request of system administrators for managed product environments.
The default content type for the BOS API is “application/json”. Unsuccessful API calls return a content type of “application/problem+json” as per RFC 7807.
A Session Template sets the operational context of which nodes to operate on for any given set of nodes. It is largely comprised of one or more boot sets and their associated software configuration.
A Boot Set defines a list of nodes, the image you want to boot/reboot the nodes with, kernel parameters to use to boot the nodes, and additional configuration management framework actions to apply during node bring up.
A BOS Session applies a provided action to the nodes defined in a Session Template.
Session Templates which do not belong to a tenant are uniquely identified by their names. All Session Templates that belong to a given tenant are uniquely identified by their names, but may share names with Session Templates that belong to other tenants or that do not belong to a tenant.
a. List available Session Templates.
GET /v2/sessiontemplates
b. Create a new Session Template if desired.
PUT /v2/sessiontemplate/{template_name}
If no Session Template exists that satisfies requirements,
then create a new Session Template.
This Session Template can be used to create a new Session later.
POST /v2/sessions
Specify template_name and an operation to create a new Session. The template_name corresponds to the Session Template name. A new Session is launched as a result of this call (in the case of /v2/sessions, the option to stage but not begin the Session also exists).
A limit can also be specified to narrow the scope of the Session. The limit can consist of nodes, groups, or roles in a comma-separated list. Multiple groups are treated as separated by OR, unless “&” is added to the start of the component, in which case this becomes an AND. Components can also be preceded by “!” to exclude them.
Note, the response from a successful Session launch contains links. Within links, href is a string that uniquely identifies the Session. href is constructed using the Session Template name and a generated UUID. Use the entire href string as the path parameter session_id to uniquely identify a Session.
GET /v2/sessions/{session_id}
If enable_cfs is true in a Session Template, then BOS will invoke CFS to configure the target nodes during boot or reboot operations.
In some situations BOS checks HSM to determine if a node has been disabled.
BOS works in concert with IMS to access boot images. All boot images specified via the Session Template must be available via IMS.
Base URLs:
Code samples
GET https://api-gw-service-nmn.local/apis/bos/ 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/bos/ \
-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/bos/', 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/bos/", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /
Get API versions
Return list of versions currently running.
Example responses
200 Response
[
{
"major": "string",
"minor": "string",
"patch": "string",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of Versions | Inline |
500 | Internal Server Error | An Internal Server Error occurred handling the request. | ProblemDetails |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Version] | false | none | [Version data] |
» major | string | false | none | none |
» minor | string | false | none | none |
» patch | string | false | none | none |
» links | [Link] | false | none | List of links to other resources |
»» href | string | false | none | none |
»» rel | string | false | none | none |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
GET https://api-gw-service-nmn.local/apis/bos/v2 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/bos/v2 \
-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/bos/v2', 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/bos/v2", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2
Get API version
Return the API version
Example responses
200 Response
{
"major": "string",
"minor": "string",
"patch": "string",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Get version details | |
The versioning system uses semver. |
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/bos/v2/healthz 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/bos/v2/healthz \
-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/bos/v2/healthz', 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/bos/v2/healthz", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/healthz
Get service health details
Get BOS health details.
Example responses
200 Response
{
"dbStatus": "string",
"apiStatus": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Service Health information | Healthz |
500 | Internal Server Error | Bad Request | ProblemDetails |
503 | Service Unavailable | Service Unavailable | ProblemDetails |
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/bos/v2/sessiontemplates HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessiontemplates
List Session Templates
List all Session Templates.
Name | In | Type | Required | Description |
---|---|---|---|---|
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
[
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session Template details array | V2SessionTemplateArray |
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/bos/v2/sessiontemplatesvalid/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplatesvalid/{session_template_id} \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplatesvalid/{session_template_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplatesvalid/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessiontemplatesvalid/{session_template_id}
Validate the Session Template by ID
Validate Session Template by Session Template ID. The Session Template ID corresponds to the name of the Session Template.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_template_id | path | SessionTemplateName | true | Session Template name |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
"string"
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session Template validity details | V2SessionTemplateValidation |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessiontemplates/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessiontemplates/{session_template_id}
Get Session Template by ID
Get Session Template by Session Template ID. The Session Template ID corresponds to the name of the Session Template.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_template_id | path | SessionTemplateName | true | Session Template name |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session Template details | V2SessionTemplate |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessiontemplates/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /v2/sessiontemplates/{session_template_id}
Create Session Template
Create a new Session Template.
Body parameter
{
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2SessionTemplate | true | A JSON object for creating a Session Template |
session_template_id | path | SessionTemplateName | true | Session Template name |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session Template details | V2SessionTemplate |
400 | Bad Request | Bad Request | ProblemDetails |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v2/sessiontemplates/{session_template_id}
Update a Session Template
Update an existing Session Template.
Body parameter
{
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2SessionTemplate | true | A JSON object for updating a Session Template |
session_template_id | path | SessionTemplateName | true | Session Template name |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session Template details | V2SessionTemplate |
400 | Bad Request | Bad Request | ProblemDetails |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessiontemplates/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
-H 'Accept: application/problem+json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v2/sessiontemplates/{session_template_id}
Delete a Session Template
Delete a Session Template.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_template_id | path | SessionTemplateName | true | Session Template name |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
404 Response
{
"type": "about:blank",
"title": "string",
"status": 400,
"instance": "http://example.com",
"detail": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | The resource was deleted. | None |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessiontemplatetemplate 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/bos/v2/sessiontemplatetemplate \
-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/bos/v2/sessiontemplatetemplate', 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/bos/v2/sessiontemplatetemplate", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessiontemplatetemplate
Get an example Session Template.
Returns a skeleton of a Session Template, which can be used as a starting point for users creating their own Session Templates.
Example responses
200 Response
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session Template details | V2SessionTemplate |
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/bos/v2/sessions HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v2/sessions \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v2/sessions', 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"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v2/sessions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v2/sessions
Create a Session
The creation of a Session performs the operation specified in the SessionCreateRequest on the Boot Sets defined in the Session Template.
Body parameter
{
"name": "session-20190728032600",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": false,
"include_disabled": false
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2SessionCreate | true | The information to create a Session |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
201 Response
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Session details | V2Session |
400 | Bad Request | Bad Request | ProblemDetails |
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/bos/v2/sessions HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessions', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessions
List Sessions
List all Sessions, including those in progress and those complete.
Name | In | Type | Required | Description |
---|---|---|---|---|
min_age | query | AgeString | false | Only include Sessions older than the given age. Age is given in the format “1d” or “6h” |
max_age | query | AgeString | false | Only include Sessions younger than the given age. Age is given in the format “1d” or “6h” |
status | query | V2SessionStatusLabel | false | Only include Sessions with the given status. |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Parameter | Value |
---|---|
status | pending |
status | running |
status | complete |
Example responses
200 Response
[
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session details array | V2SessionArray |
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/bos/v2/sessions HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessions \
-H 'Accept: application/problem+json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/sessions', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/sessions", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v2/sessions
Delete multiple Sessions.
Delete multiple Sessions. If filters are provided, only Sessions matching all filters will be deleted. By default only completed Sessions will be deleted.
Name | In | Type | Required | Description |
---|---|---|---|---|
min_age | query | AgeString | false | Only include Sessions older than the given age. Age is given in the format “1d” or “6h” |
max_age | query | AgeString | false | Only include Sessions younger than the given age. Age is given in the format “1d” or “6h” |
status | query | V2SessionStatusLabel | false | Only include Sessions with the given status. |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Parameter | Value |
---|---|
status | pending |
status | running |
status | complete |
Example responses
400 Response
{
"type": "about:blank",
"title": "string",
"status": 400,
"instance": "http://example.com",
"detail": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | The resource was deleted. | None |
400 | Bad Request | Bad Request | ProblemDetails |
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/bos/v2/sessions/{session_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessions/{session_id}
Get Session details by ID
Get Session details by Session ID.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | V2SessionName | true | Session ID |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session details | V2Session |
404 | Not Found | The resource was not found. | ProblemDetails |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v2/sessions/{session_id}
Update status of a single Session
Update the state for a given Session in the BOS database. This is intended only for internal use by the BOS service.
Body parameter
{
"components": "string",
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2SessionUpdate | true | The state for a single Session |
session_id | path | V2SessionName | true | Session ID |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session details | V2Session |
400 | Bad Request | Bad Request | ProblemDetails |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessions/{session_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} \
-H 'Accept: application/problem+json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v2/sessions/{session_id}
Delete Session by ID
Delete Session by Session ID.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | V2SessionName | true | Session ID |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
404 Response
{
"type": "about:blank",
"title": "string",
"status": 400,
"instance": "http://example.com",
"detail": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | The resource was deleted. | None |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessions/{session_id}/status HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessions/{session_id}/status
Get Session extended status information by ID
Get Session extended status information by ID
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | V2SessionName | true | Session ID |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"status": "pending",
"managed_components_count": 0,
"phases": {
"percent_complete": 0,
"percent_powering_on": 0,
"percent_powering_off": 0,
"percent_configuring": 0
},
"percent_successful": 0,
"percent_failed": 0,
"percent_staged": 0,
"error_summary": {},
"timing": {
"start_time": "string",
"end_time": "string",
"duration": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session status details | V2SessionExtendedStatus |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/sessions/{session_id}/status HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v2/sessions/{session_id}/status
Saves the current Session to database
Saves the current Session to database. For use at Session completion.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | V2SessionName | true | Session ID |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session details | V2Session |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/components HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/components \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/components", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/components
Retrieve the state of a collection of Components
Retrieve the full collection of Components in the form of a ComponentArray. Full results can also be filtered by query parameters. Only the first filter parameter of each type is used and the parameters are applied in an AND fashion. If the collection is empty or the filters have no match, an empty array is returned.
Name | In | Type | Required | Description |
---|---|---|---|---|
ids | query | V2ComponentId | false | Retrieve the Components with the given ID |
session | query | V2SessionName | false | Retrieve the Components with the given Session ID. |
staged_session | query | V2SessionName | false | Retrieve the Components with the given staged Session ID. |
enabled | query | boolean | false | Retrieve the Components with the “enabled” state. |
phase | query | V2ComponentPhase | false | Retrieve the Components in the given phase. |
status | query | string | false | Retrieve the Components with the given status. |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
ids: Retrieve the Components with the given ID (e.g. xname for hardware Components). Can be chained for selecting groups of Components.
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
[
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of Component states | V2ComponentArray |
400 | Bad Request | Bad Request | ProblemDetails |
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/bos/v2/components HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/bos/v2/components \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/bos/v2/components", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /v2/components
Add or Replace a collection of Components
Update the state for a collection of Components in the BOS database
Body parameter
[
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
]
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2ComponentArrayWithIds | true | The state for an array of Components |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
[
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of Component states | V2ComponentArray |
400 | Bad Request | Bad Request | ProblemDetails |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/bos/v2/components HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/components \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/components", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v2/components
Update a collection of Components
Update the state for a collection of Components in the BOS database
Body parameter
{
"patch": {
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
},
"filters": {
"ids": "string",
"session": ""
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | any | true | The state for an array of Components |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
[
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of Component states | V2ComponentArray |
400 | Bad Request | Bad Request | ProblemDetails |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/components/{component_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/components/{component_id}
Retrieve the state of a single Component
Retrieve the current and desired state of a single Component
Name | In | Type | Required | Description |
---|---|---|---|---|
component_id | path | V2ComponentId | true | Component ID. e.g. xname for hardware Components |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A single Component state | V2Component |
400 | Bad Request | Bad Request | ProblemDetails |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/components/{component_id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /v2/components/{component_id}
Add or Replace a single Component
Update the state for a given Component in the BOS database
Body parameter
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Component | true | The state for a single Component |
component_id | path | V2ComponentId | true | Component ID. e.g. xname for hardware Components |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A single Component state | V2Component |
400 | Bad Request | Bad Request | ProblemDetails |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v2/components/{component_id}
Update a single Component
Update the state for a given Component in the BOS database
Body parameter
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Component | true | The state for a single Component |
component_id | path | V2ComponentId | true | Component ID. e.g. xname for hardware Components |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A single Component state | V2Component |
400 | Bad Request | Bad Request | ProblemDetails |
404 | Not Found | The resource was not found. | ProblemDetails |
409 | Conflict | The update was not allowed due to a conflict. | ProblemDetails |
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/bos/v2/components/{component_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
-H 'Accept: application/problem+json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v2/components/{component_id}
Delete a single Component
Delete the given Component
Name | In | Type | Required | Description |
---|---|---|---|---|
component_id | path | V2ComponentId | true | Component ID. e.g. xname for hardware Components |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
404 Response
{
"type": "about:blank",
"title": "string",
"status": 400,
"instance": "http://example.com",
"detail": "string"
}
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | The resource was deleted. | None |
404 | Not Found | The resource was not found. | ProblemDetails |
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/bos/v2/applystaged HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v2/applystaged \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Cray-Tenant-Name: vcluster-my-tenant1' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cray-Tenant-Name': 'vcluster-my-tenant1',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v2/applystaged', 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"},
"Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v2/applystaged", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v2/applystaged
Start a staged Session for the specified Components
Given a list of xnames, this will trigger the start of any Sessions staged for those Components. Components without a staged Session will be ignored, and a list all Components that are acted on will be returned in the response.
Body parameter
{
"xnames": [
"string"
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2ApplyStagedComponents | true | A list of xnames that should have their staged Session applied. |
Cray-Tenant-Name | header | TenantName | false | Tenant name. |
Cray-Tenant-Name: Tenant name.
Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.
Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.
Example responses
200 Response
{
"succeeded": [
"string"
],
"failed": [
"string"
],
"ignored": [
"string"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of xnames that should have their staged Session applied. | V2ApplyStagedStatus |
400 | Bad Request | Bad Request | ProblemDetails |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
Code samples
PATCH https://api-gw-service-nmn.local/apis/bos/v2/options HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/options \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/options', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/options", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v2/options
Update BOS service options
Update one or more of the BOS service options.
Body parameter
{
"cfs_read_timeout": 20,
"cleanup_completed_session_ttl": "3d",
"clear_stage": true,
"component_actual_state_ttl": "6h",
"default_retry_policy": 1,
"disable_components_on_completion": true,
"discovery_frequency": 33554432,
"ims_errors_fatal": true,
"ims_images_must_exist": true,
"logging_level": "string",
"max_boot_wait_time": 1048576,
"max_component_batch_size": 1000,
"max_power_off_wait_time": 1048576,
"max_power_on_wait_time": 1048576,
"polling_frequency": 1048576,
"reject_nids": true,
"session_limit_required": true
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Options | true | Service-wide options |
Example responses
200 Response
{
"cfs_read_timeout": 20,
"cleanup_completed_session_ttl": "3d",
"clear_stage": true,
"component_actual_state_ttl": "6h",
"default_retry_policy": 1,
"disable_components_on_completion": true,
"discovery_frequency": 33554432,
"ims_errors_fatal": true,
"ims_images_must_exist": true,
"logging_level": "string",
"max_boot_wait_time": 1048576,
"max_component_batch_size": 1000,
"max_power_off_wait_time": 1048576,
"max_power_on_wait_time": 1048576,
"polling_frequency": 1048576,
"reject_nids": true,
"session_limit_required": true
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of service-wide options | V2Options |
400 | Bad Request | Bad Request | ProblemDetails |
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/bos/v2/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/bos/v2/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/bos/v2/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/bos/v2/version", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/version
Get API version
Return the API version
Example responses
200 Response
{
"major": "string",
"minor": "string",
"patch": "string",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Get version details | |
The versioning system uses semver. |
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/bos/v2/options 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/bos/v2/options \
-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/bos/v2/options', 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/bos/v2/options", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/options
Retrieve the BOS service options
Retrieve the list of BOS service options.
Example responses
200 Response
{
"cfs_read_timeout": 20,
"cleanup_completed_session_ttl": "3d",
"clear_stage": true,
"component_actual_state_ttl": "6h",
"default_retry_policy": 1,
"disable_components_on_completion": true,
"discovery_frequency": 33554432,
"ims_errors_fatal": true,
"ims_images_must_exist": true,
"logging_level": "string",
"max_boot_wait_time": 1048576,
"max_component_batch_size": 1000,
"max_power_off_wait_time": 1048576,
"max_power_on_wait_time": 1048576,
"polling_frequency": 1048576,
"reject_nids": true,
"session_limit_required": true
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of service-wide options | V2Options |
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth
"3d"
Age in minutes (e.g. “3m”), hours (e.g. “5h”), days (e.g. “10d”), or weeks (e.g. “2w”).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Age in minutes (e.g. “3m”), hours (e.g. “5h”), days (e.g. “10d”), or weeks (e.g. “2w”). |
"s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
A path to the initrd to use for booting.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A path to the initrd to use for booting. |
"s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel"
A path to the kernel to use for booting.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A path to the kernel to use for booting. |
"s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json"
A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc, depending on the type of the Boot Set.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc, depending on the type of the Boot Set. |
"console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}"
The kernel parameters to use to boot the nodes.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The kernel parameters to use to boot the nodes. |
"1cc4eef4f407bd8a62d7d66ee4b9e9c8"
This is the ’entity tag’. It helps verify the version of metadata describing the components of the boot image we are working with.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | This is the ’entity tag’. It helps verify the version of metadata describing the components of the boot image we are working with. |
"compute"
The Boot Set name.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | write-only | The Boot Set name. * Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names must begin and end with a letter or digit. |
"cpss3"
The root file system provider.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The root file system provider. |
"dvs:api-gw-service-nmn.local:300:nmn0"
The root file system provider passthrough.
These are additional kernel parameters that will be appended to
the ‘rootfs=
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The root file system provider passthrough. These are additional kernel parameters that will be appended to the ‘rootfs= |
"s3"
The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute. |
"compute-23.4.0"
The name of configuration to be applied.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The name of configuration to be applied. |
""
An empty string value.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | An empty string value. |
Property | Value |
---|---|
anonymous |
""
An empty string value.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string¦null | false | none | An empty string value. |
Property | Value |
---|---|
anonymous |
true
Whether to enable the Configuration Framework Service (CFS).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | boolean | false | none | Whether to enable the Configuration Framework Service (CFS). |
"x3001c0s39b0n0"
Hardware component name (xname).
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Hardware component name (xname). |
{
"dbStatus": "string",
"apiStatus": "string"
}
Service health status
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
dbStatus | string | false | none | none |
apiStatus | string | false | none | none |
{
"href": "string",
"rel": "string"
}
Link to other resources
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
href | string | false | none | none |
rel | string | false | none | none |
[
{
"href": "string",
"rel": "string"
}
]
List of links to other resources
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Link] | false | none | List of links to other resources |
[
{
"href": "string",
"rel": "string"
}
]
List of links to other resources
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [Link] | false | read-only | List of links to other resources |
[
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
A node list that is required to have at least one node. Nodes must be specified by component name (xname). NIDs are not supported. If the reject_nids option is enabled, then Session Template creation or validation will fail if any of the boot sets contain a NodeList that appears to contain a NID.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [HardwareComponentName] | false | none | A node list that is required to have at least one node. Nodes must be specified by component name (xname). NIDs are not supported. If the reject_nids option is enabled, then Session Template creation or validation will fail if any of the boot sets contain a NodeList that appears to contain a NID. |
[
"string"
]
Node group list. Allows actions against associated nodes by logical groupings.
None
[
"Compute",
"Application"
]
Node role list. Allows actions against nodes with associated roles.
None
{
"type": "about:blank",
"title": "string",
"status": 400,
"instance": "http://example.com",
"detail": "string"
}
An error response for RFC 7807 problem details.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
type | string(uri) | false | none | Relative URI reference to the type of problem which includes human readable documentation. |
title | string | false | none | Short, human-readable summary of the problem, should not change by occurrence. |
status | integer | false | none | HTTP status code |
instance | string(uri) | false | none | A relative URI reference that identifies the specific occurrence of the problem |
detail | string | false | none | A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information. |
""
A comma-separated list of nodes, groups, or roles to which the Session will be limited. Components are treated as OR operations unless preceded by “&” for AND or “!” for NOT.
Alternatively, the limit can be set to “*”, which means no limit.
An empty string or null value is the same as specifying no limit.
If the reject_nids option is enabled, then Session creation will fail if its limit appears to contain a NID value.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string¦null | false | none | A comma-separated list of nodes, groups, or roles to which the Session will be limited. Components are treated as OR operations unless preceded by “&” for AND or “!” for NOT. Alternatively, the limit can be set to “*”, which means no limit. An empty string or null value is the same as specifying no limit. If the reject_nids option is enabled, then Session creation will fail if its limit appears to contain a NID value. |
"string"
An optional description for the Session Template.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | An optional description for the Session Template. |
"cle-1.0.0"
Name of the Session Template.
The name must:
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Name of the Session Template. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
"vcluster-my-tenant1"
Name of a tenant. Used for multi-tenancy. An empty string means no tenant.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Name of a tenant. Used for multi-tenancy. An empty string means no tenant. |
{
"major": "string",
"minor": "string",
"patch": "string",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Version data
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
major | string | false | none | none |
minor | string | false | none | none |
patch | string | false | none | none |
links | LinkList | false | none | List of links to other resources |
"string"
Name of the tenant that owns this resource. Only used in environments with multi-tenancy enabled. An empty string or null value means the resource is not owned by a tenant. The absence of this field from a resource indicates the same.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string¦null | false | read-only | Name of the tenant that owns this resource. Only used in environments with multi-tenancy enabled. An empty string or null value means the resource is not owned by a tenant. The absence of this field from a resource indicates the same. |
{
"configuration": "compute-23.4.0"
}
This is the collection of parameters that are passed to the Configuration Framework Service when configuration is enabled. Can be set as the global value for a Session Template, or individually within a Boot Set.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
configuration | CfsConfiguration | false | none | The name of configuration to be applied. |
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
A Session Template object represents a collection of resources and metadata. A Session Template is used to create a Session which applies the data to group of Components.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | read-only | Name of the Session Template. Names must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
tenant | V2TenantName | false | none | Name of the tenant that owns this resource. Only used in environments with multi-tenancy enabled. An empty string or null value means the resource is not owned by a tenant. The absence of this field from a resource indicates the same. |
description | SessionTemplateDescription | false | none | An optional description for the Session Template. |
enable_cfs | EnableCfs | false | none | Whether to enable the Configuration Framework Service (CFS). |
cfs | V2CfsParameters | false | none | This is the collection of parameters that are passed to the Configuration Framework Service when configuration is enabled. Can be set as the global value for a Session Template, or individually within a Boot Set. |
boot_sets | object | true | none | Mapping from Boot Set names to Boot Sets. * Boot Set names must be 1-127 characters in length. * Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names must begin and end with a letter or digit. |
» additionalProperties | V2BootSet | false | none | A Boot Set is a collection of nodes defined by an explicit list, their functional role, and their logical groupings. This collection of nodes is associated with one set of boot artifacts and optional additional records for configuration and root filesystem provisioning. A boot set requires at least one of the following fields to be specified: node_list, node_roles_groups, node_groups If specified, the name field must match the key mapping to this boot set in the boot_sets field of the containing V2SessionTemplate. |
links | LinkListReadOnly | false | none | List of links to other resources |
"string"
Message describing errors or incompleteness in a Session Template.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Message describing errors or incompleteness in a Session Template. |
"session-20190728032600"
Name of the Session.
The name must:
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Name of the Session. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
"session-20190728032600"
oneOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | V2SessionName | false | none | Name of the Session. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
xor
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | EmptyString | false | none | An empty string value. |
"boot"
A Session represents a desired state that is being applied to a group of Components. Sessions run until all Components it manages have either been disabled due to completion, or until all Components are managed by other newer Sessions.
Operation – An operation to perform on Components in this Session. Boot Applies the Template to the Components and boots/reboots if necessary. Reboot Applies the Template to the Components; guarantees a reboot. Shutdown Power down Components that are on.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A Session represents a desired state that is being applied to a group of Components. Sessions run until all Components it manages have either been disabled due to completion, or until all Components are managed by other newer Sessions. Operation – An operation to perform on Components in this Session. Boot Applies the Template to the Components and boots/reboots if necessary. Reboot Applies the Template to the Components; guarantees a reboot. Shutdown Power down Components that are on. |
Property | Value |
---|---|
anonymous | boot |
anonymous | reboot |
anonymous | shutdown |
{
"name": "session-20190728032600",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": false,
"include_disabled": false
}
A Session Creation object. A UUID name is generated if a name is not provided. The limit parameter is required if the session_limit_required option is true.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | V2SessionName | false | none | Name of the Session. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
operation | V2SessionOperation | true | none | A Session represents a desired state that is being applied to a group of Components. Sessions run until all Components it manages have either been disabled due to completion, or until all Components are managed by other newer Sessions. Operation – An operation to perform on Components in this Session. Boot Applies the Template to the Components and boots/reboots if necessary. Reboot Applies the Template to the Components; guarantees a reboot. Shutdown Power down Components that are on. |
template_name | SessionTemplateName | true | none | Name of the Session Template. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
limit | SessionLimit | false | none | A comma-separated list of nodes, groups, or roles to which the Session will be limited. Components are treated as OR operations unless preceded by “&” for AND or “!” for NOT. Alternatively, the limit can be set to “*”, which means no limit. An empty string or null value is the same as specifying no limit. If the reject_nids option is enabled, then Session creation will fail if its limit appears to contain a NID value. |
stage | boolean | false | none | Set to stage a Session which will not immediately change the state of any Components. The “applystaged” endpoint can be called at a later time to trigger the start of this Session. |
include_disabled | boolean | false | none | Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM). |
"pending"
The status of a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The status of a Session. |
Property | Value |
---|---|
anonymous | pending |
anonymous | running |
anonymous | complete |
"string"
When the Session was created.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | When the Session was created. |
"string"
When the Session was completed. A null value means the Session has not ended.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string¦null | false | none | When the Session was completed. A null value means the Session has not ended. |
{
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
Information on the status of a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
start_time | V2SessionStartTime | false | none | When the Session was created. |
end_time | V2SessionEndTime | false | none | When the Session was completed. A null value means the Session has not ended. |
status | V2SessionStatusLabel | false | none | The status of a Session. |
error | string¦null | false | none | Error which prevented the Session from running. A null value means the Session has not encountered an error. |
{
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
A Boot Set is a collection of nodes defined by an explicit list, their functional role, and their logical groupings. This collection of nodes is associated with one set of boot artifacts and optional additional records for configuration and root filesystem provisioning.
A boot set requires at least one of the following fields to be specified: node_list, node_roles_groups, node_groups
If specified, the name field must match the key mapping to this boot set in the boot_sets field of the containing V2SessionTemplate.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | BootSetName | false | none | The Boot Set name. * Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names must begin and end with a letter or digit. |
path | BootManifestPath | true | none | A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc, depending on the type of the Boot Set. |
cfs | V2CfsParameters | false | none | This is the collection of parameters that are passed to the Configuration Framework Service when configuration is enabled. Can be set as the global value for a Session Template, or individually within a Boot Set. |
type | BootSetType | true | none | The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute. |
etag | BootSetEtag | false | none | This is the ’entity tag’. It helps verify the version of metadata describing the components of the boot image we are working with. |
kernel_parameters | BootKernelParameters | false | none | The kernel parameters to use to boot the nodes. |
node_list | NodeList | false | none | A node list that is required to have at least one node. Nodes must be specified by component name (xname). NIDs are not supported. If the reject_nids option is enabled, then Session Template creation or validation will fail if any of the boot sets contain a NodeList that appears to contain a NID. |
node_roles_groups | NodeRoleList | false | none | Node role list. Allows actions against nodes with associated roles. |
node_groups | NodeGroupList | false | none | Node group list. Allows actions against associated nodes by logical groupings. |
arch | string | false | none | The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component ‘Arch’ field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86. |
rootfs_provider | BootSetRootfsProvider | false | none | The root file system provider. |
rootfs_provider_passthrough | BootSetRootfsProviderPassthrough | false | none | The root file system provider passthrough. These are additional kernel parameters that will be appended to the ‘rootfs= |
Property | Value |
---|---|
arch | X86 |
arch | ARM |
arch | Other |
arch | Unknown |
[
{
"name": "cle-1.0.0",
"tenant": "string",
"description": "string",
"enable_cfs": true,
"cfs": {
"configuration": "compute-23.4.0"
},
"boot_sets": {
"property1": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"cfs": {
"configuration": "compute-23.4.0"
},
"type": "s3",
"etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"arch": "X86",
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
]
An array of Session Templates.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V2SessionTemplate] | false | none | An array of Session Templates. |
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
A Session object
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | V2SessionName | true | none | Name of the Session. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
tenant | V2TenantName | false | none | Name of the tenant that owns this resource. Only used in environments with multi-tenancy enabled. An empty string or null value means the resource is not owned by a tenant. The absence of this field from a resource indicates the same. |
operation | V2SessionOperation | true | none | A Session represents a desired state that is being applied to a group of Components. Sessions run until all Components it manages have either been disabled due to completion, or until all Components are managed by other newer Sessions. Operation – An operation to perform on Components in this Session. Boot Applies the Template to the Components and boots/reboots if necessary. Reboot Applies the Template to the Components; guarantees a reboot. Shutdown Power down Components that are on. |
template_name | SessionTemplateName | true | none | Name of the Session Template. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
limit | SessionLimit | false | none | A comma-separated list of nodes, groups, or roles to which the Session will be limited. Components are treated as OR operations unless preceded by “&” for AND or “!” for NOT. Alternatively, the limit can be set to “*”, which means no limit. An empty string or null value is the same as specifying no limit. If the reject_nids option is enabled, then Session creation will fail if its limit appears to contain a NID value. |
stage | boolean | false | none | Set to stage a Session which will not immediately change the state of any Components. The “applystaged” endpoint can be called at a later time to trigger the start of this Session. |
components | string | false | none | A comma-separated list of nodes, representing the initial list of nodes the Session should operate against. The list will remain even if other Sessions have taken over management of the nodes. |
include_disabled | boolean | false | none | Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM). |
status | V2SessionStatus | false | none | Information on the status of a Session. |
{
"components": "string",
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
A Session update object
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
components | string | false | none | A comma-separated list of nodes, representing the initial list of nodes the Session should operate against. The list will remain even if other Sessions have taken over management of the nodes. |
status | V2SessionStatus | false | none | Information on the status of a Session. |
[
{
"name": "session-20190728032600",
"tenant": "string",
"operation": "boot",
"template_name": "cle-1.0.0",
"limit": "",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
]
An array of Sessions.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V2Session] | false | none | An array of Sessions. |
{
"percent_complete": 0,
"percent_powering_on": 0,
"percent_powering_off": 0,
"percent_configuring": 0
}
Detailed information on the phases of a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
percent_complete | number | false | none | The percent of Components currently in a completed/stable state |
percent_powering_on | number | false | none | The percent of Components currently in the powering-on phase |
percent_powering_off | number | false | none | The percent of Components currently in the powering-off phase |
percent_configuring | number | false | none | The percent of Components currently in the configuring phase |
{
"start_time": "string",
"end_time": "string",
"duration": "string"
}
Detailed information on the timing of a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
start_time | V2SessionStartTime | false | none | When the Session was created. |
end_time | V2SessionEndTime | false | none | When the Session was completed. A null value means the Session has not ended. |
duration | string | false | none | The current duration of the ongoing Session or final duration of the completed Session. |
{
"status": "pending",
"managed_components_count": 0,
"phases": {
"percent_complete": 0,
"percent_powering_on": 0,
"percent_powering_off": 0,
"percent_configuring": 0
},
"percent_successful": 0,
"percent_failed": 0,
"percent_staged": 0,
"error_summary": {},
"timing": {
"start_time": "string",
"end_time": "string",
"duration": "string"
}
}
Detailed information on the status of a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | V2SessionStatusLabel | false | none | The status of a Session. |
managed_components_count | integer | false | none | The count of Components currently managed by this Session |
phases | V2SessionExtendedStatusPhases | false | none | Detailed information on the phases of a Session. |
percent_successful | number | false | none | The percent of Components currently in a successful state |
percent_failed | number | false | none | The percent of Components currently in a failed state |
percent_staged | number | false | none | The percent of Components currently still staged for this Session |
error_summary | object | false | none | A summary of the errors currently listed by all Components |
timing | V2SessionExtendedStatusTiming | false | none | Detailed information on the timing of a Session. |
{
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
}
A collection of boot artifacts.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
kernel | BootKernelPath | false | none | A path to the kernel to use for booting. |
kernel_parameters | BootKernelParameters | false | none | The kernel parameters to use to boot the nodes. |
initrd | BootInitrdPath | false | none | A path to the initrd to use for booting. |
"string"
A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten. |
"string"
The Component’s ID. (e.g. xname for hardware Components)
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The Component’s ID. (e.g. xname for hardware Components) |
[
"string"
]
A list of Component IDs (xnames)
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V2ComponentId] | false | none | A list of Component IDs (xnames) |
"2019-07-28T03:26:00Z"
The date/time when the state was last updated in RFC 3339 format.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string(date-time) | false | read-only | The date/time when the state was last updated in RFC 3339 format. |
{
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
}
The actual boot artifacts and configuration for a Component
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
boot_artifacts | V2BootArtifacts | false | none | A collection of boot artifacts. |
bss_token | V2ComponentBssToken | false | none | A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten. |
last_updated | V2ComponentLastUpdated | false | none | The date/time when the state was last updated in RFC 3339 format. |
{
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
}
The desired boot artifacts and configuration for a Component
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
boot_artifacts | V2BootArtifacts | false | none | A collection of boot artifacts. |
configuration | CfsConfiguration | false | none | The name of configuration to be applied. |
bss_token | V2ComponentBssToken | false | none | A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten. |
last_updated | V2ComponentLastUpdated | false | none | The date/time when the state was last updated in RFC 3339 format. |
{
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
}
The staged boot artifacts and configuration for a Component. Optionally, a Session may be set which can be triggered at a later time against this Component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
boot_artifacts | V2BootArtifacts | false | none | A collection of boot artifacts. |
configuration | CfsConfiguration | false | none | The name of configuration to be applied. |
session | V2SessionNameOrEmpty | false | none | none |
last_updated | V2ComponentLastUpdated | false | none | The date/time when the state was last updated in RFC 3339 format. |
{
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
}
Information on the most recent action taken against the node.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
last_updated | V2ComponentLastUpdated | false | none | The date/time when the state was last updated in RFC 3339 format. |
action | string | false | none | A description of the most recent operator/action to impact the Component. |
failed | boolean | false | none | Denotes if the last action failed to accomplish its task |
{
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
}
Information on the most recent attempt to return the node to its desired state.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
power_on_attempts | integer | false | none | How many attempts have been made to power-on since the last time the node was in the desired state. |
power_off_graceful_attempts | integer | false | none | How many attempts have been made to power-off gracefully since the last time the node was in the desired state. |
power_off_forceful_attempts | integer | false | none | How many attempts have been made to power-off forcefully since the last time the node was in the desired state. |
"string"
The current phase of the Component in the boot process.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The current phase of the Component in the boot process. |
{
"phase": "string",
"status": "string",
"status_override": "string"
}
Status information for the Component
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
phase | V2ComponentPhase | false | none | The current phase of the Component in the boot process. |
status | string | false | read-only | The current status of the Component. More detailed than phase. |
status_override | string | false | none | If set, this will override the status value. |
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
The current and desired artifacts state for a Component, and the Session responsible for the Component’s current state.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | V2ComponentId | false | none | The Component’s ID. (e.g. xname for hardware Components) |
actual_state | V2ComponentActualState | false | none | The actual boot artifacts and configuration for a Component |
desired_state | V2ComponentDesiredState | false | none | The desired boot artifacts and configuration for a Component |
staged_state | V2ComponentStagedState | false | none | The staged boot artifacts and configuration for a Component. Optionally, a Session may be set which can be triggered at a later time against this Component. |
last_action | V2ComponentLastAction | false | none | Information on the most recent action taken against the node. |
event_stats | V2ComponentEventStats | false | none | Information on the most recent attempt to return the node to its desired state. |
status | V2ComponentStatus | false | none | Status information for the Component |
enabled | boolean | false | none | A flag indicating if actions should be taken for this Component. |
error | string | false | none | A description of the most recent error to impact the Component. |
session | V2SessionNameOrEmpty | false | none | none |
retry_policy | integer | false | none | The maximum number attempts per action when actions fail. Defaults to the global default_retry_policy if not set |
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
The current and desired artifacts state for a Component, and the Session responsible for the Component’s current state.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | V2ComponentId | true | none | The Component’s ID. (e.g. xname for hardware Components) |
actual_state | V2ComponentActualState | false | none | The actual boot artifacts and configuration for a Component |
desired_state | V2ComponentDesiredState | false | none | The desired boot artifacts and configuration for a Component |
staged_state | V2ComponentStagedState | false | none | The staged boot artifacts and configuration for a Component. Optionally, a Session may be set which can be triggered at a later time against this Component. |
last_action | V2ComponentLastAction | false | none | Information on the most recent action taken against the node. |
event_stats | V2ComponentEventStats | false | none | Information on the most recent attempt to return the node to its desired state. |
status | V2ComponentStatus | false | none | Status information for the Component |
enabled | boolean | false | none | A flag indicating if actions should be taken for this Component. |
error | string | false | none | A description of the most recent error to impact the Component. |
session | V2SessionNameOrEmpty | false | none | none |
retry_policy | integer | false | none | The maximum number attempts per action when actions fail. Defaults to the global default_retry_policy if not set |
[
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
]
An array of Component states.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V2Component] | false | none | An array of Component states. |
[
{
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
}
]
An array of Component states with associated Ids.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V2ComponentWithId] | false | none | An array of Component states with associated Ids. |
{
"ids": "string",
"session": ""
}
Information for patching multiple Components by listing their IDs.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ids | string | true | none | A comma-separated list of Component IDs. |
session | EmptyStringNullable | false | none | An empty string value. |
{
"ids": "",
"session": "session-20190728032600"
}
Information for patching multiple Components by Session name. All Components part of this Session will be patched.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ids | EmptyStringNullable | false | none | An empty string value. |
session | V2SessionName | true | none | Name of the Session. The name must: * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. |
{
"patch": {
"id": "string",
"actual_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
"kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
},
"configuration": "compute-23.4.0",
"session": "session-20190728032600",
"last_updated": "2019-07-28T03:26:00Z"
},
"last_action": {
"last_updated": "2019-07-28T03:26:00Z",
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 1048576,
"power_off_graceful_attempts": 1048576,
"power_off_forceful_attempts": 1048576
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "session-20190728032600",
"retry_policy": 1
},
"filters": {
"ids": "string",
"session": ""
}
}
Information for patching multiple Components.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
patch | V2Component | true | none | The current and desired artifacts state for a Component, and the Session responsible for the Component’s current state. |
filters | any | true | none | none |
oneOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | V2ComponentsFilterByIds | false | none | Information for patching multiple Components by listing their IDs. |
xor
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
» anonymous | V2ComponentsFilterBySession | false | none | Information for patching multiple Components by Session name. All Components part of this Session will be patched. |
{
"xnames": [
"string"
]
}
A list of Components that should have their staged Session applied.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
xnames | V2ComponentIdList | false | none | A list of Component IDs (xnames) |
{
"succeeded": [
"string"
],
"failed": [
"string"
],
"ignored": [
"string"
]
}
Mapping from Component staged Session statuses to Components with that status.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
succeeded | V2ComponentIdList | false | none | A list of Component IDs (xnames) |
failed | V2ComponentIdList | false | none | A list of Component IDs (xnames) |
ignored | V2ComponentIdList | false | none | A list of Component IDs (xnames) |
{
"cfs_read_timeout": 20,
"cleanup_completed_session_ttl": "3d",
"clear_stage": true,
"component_actual_state_ttl": "6h",
"default_retry_policy": 1,
"disable_components_on_completion": true,
"discovery_frequency": 33554432,
"ims_errors_fatal": true,
"ims_images_must_exist": true,
"logging_level": "string",
"max_boot_wait_time": 1048576,
"max_component_batch_size": 1000,
"max_power_off_wait_time": 1048576,
"max_power_on_wait_time": 1048576,
"polling_frequency": 1048576,
"reject_nids": true,
"session_limit_required": true
}
Options for the Boot Orchestration Service.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
cfs_read_timeout | integer | false | none | The amount of time (in seconds) to wait for a response before timing out a request to CFS |
cleanup_completed_session_ttl | string | false | none | Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks). 0 disables cleanup behavior. |
clear_stage | boolean | false | none | Allows a Component’s staged information to be cleared when the requested staging action has been started. Defaults to false. |
component_actual_state_ttl | string | false | none | The maximum amount of time a Component’s actual state is considered valid (in minutes, hours, days, or weeks). 0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically. |
default_retry_policy | integer | false | none | The default maximum number attempts per node for failed actions. |
disable_components_on_completion | boolean | false | none | If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes. |
discovery_frequency | integer | false | none | How frequently the BOS discovery agent syncs new Components from HSM (in seconds) |
ims_errors_fatal | boolean | false | none | This option modifies how BOS behaves when validating the architecture of a boot image in a boot set. Specifically, this option comes into play when BOS needs data from IMS in order to do this validation, but IMS is unreachable. In the above situation, if this option is true, then the validation will fail. Otherwise, if the option is false, then a warning will be logged, but the validation will not be failed because of this. |
ims_images_must_exist | boolean | false | none | This option modifies how BOS behaves when validating a boot set whose boot image appears to be from IMS. Specifically, this option comes into play when the image does not actually exist in IMS. In the above situation, if this option is true, then the validation will fail. Otherwise, if the option is false, then a warning will be logged, but the validation will not be failed because of this. Note that if ims_images_must_exist is true but ims_errors_fatal is false, then a failure to determine whether or not an image is in IMS will NOT result in a fatal error. |
logging_level | string | false | none | The logging level for all BOS services |
max_boot_wait_time | integer | false | none | How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds) |
max_component_batch_size | integer | false | none | The maximum number of Components that a BOS operator will process at once. 0 means no limit. |
max_power_off_wait_time | integer | false | none | How long BOS will wait for a node to power off before forcefully powering off (in seconds) |
max_power_on_wait_time | integer | false | none | How long BOS will wait for a node to power on before calling power on again (in seconds) |
polling_frequency | integer | false | none | How frequently the BOS operators check Component state for needed actions (in seconds) |
reject_nids | boolean | false | none | If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support). Specifically, if this option is true, then: - When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail. - When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail. - When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error. This option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started). |
session_limit_required | boolean | false | none | If true, Sessions cannot be created without specifying the limit parameter. |