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.
List available session templates. Note the name which uniquely identifies each session template. This value can be used to create a new session later, if specified in the request body of POST /session.
If no session template pre-exists that satisfies requirements, then create a new session template. name uniquely identifies the session template. This value can be used to create a new session later, if specified in the request body of POST /session.
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.
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 in for the /session/{session_id} endpoint.
Get session details by session ID.
List all in progress and completed sessions.
BOS works in concert with Image Management Service (IMS) to access boot images, and if enable_cfs is true then BOS will invoke CFS to configure the compute nodes.
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 |
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 | [Link 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/v1 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/v1 \
-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/v1', 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/v1", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1
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/v1/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/v1/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/v1/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/v1/version", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/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/v1/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/v1/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/v1/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/v1/healthz", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/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
POST https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v1/sessiontemplate
Create session template
Create a new session template.
Body parameter
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V1SessionTemplate | true | A JSON object for creating a session template |
Example responses
201 Response
"cle-1.0.0"
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Session Template name | V1SessionTemplateName |
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/v1/sessiontemplate 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/v1/sessiontemplate \
-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/v1/sessiontemplate', 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/v1/sessiontemplate", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/sessiontemplate
List session templates
List all session templates. Session templates are uniquely identified by the name.
Example responses
200 Response
[
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | SessionTemplateArray |
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/v1/sessiontemplate/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate/{session_template_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate/{session_template_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/sessiontemplate/{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 | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | Inline |
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/v1/sessiontemplate/{session_template_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate/{session_template_id} \
-H 'Accept: application/problem+json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate/{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"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v1/sessiontemplate/{session_template_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v1/sessiontemplate/{session_template_id}
Delete a session template
Delete a session template.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_template_id | path | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
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/v1/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/v1/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/v1/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/v1/sessiontemplatetemplate", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/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",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | V1SessionTemplate |
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/v1/session HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v1/session \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v1/session', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v1/session", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v1/session
Create a session
The creation of a session performs the operation specified in the SessionCreateRequest on the boot set(s) defined in the session template.
Body parameter
{
"operation": "boot",
"templateUuid": "my-session-template",
"templateName": "my-session-template",
"limit": "string"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | any | true | A JSON object for creating a Session |
Example responses
201 Response
{
"operation": "boot",
"templateUuid": "my-session-template",
"templateName": "my-session-template",
"job": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"limit": "string",
"links": [
{
"href": "string",
"jobId": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"rel": "session",
"type": "GET"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | Session | V1Session |
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/v1/session 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/v1/session \
-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/v1/session', 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/v1/session", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/session
List session IDs
List IDs of all sessions, including those in progress and those complete.
Example responses
200 Response
[
"8deb0746-b18c-427c-84a8-72ec6a28642c"
]
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A collection of Session IDs | Inline |
Status Code 200
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V1SessionId] | false | none | [Unique BOS v1 session identifier.] |
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/v1/session/{session_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/session/{session_id}
Get session details by ID
Get session details by session ID.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
Example responses
200 Response
{
"complete": true,
"error_count": 0,
"in_progress": false,
"job": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"operation": "boot",
"start_time": "2020-04-24T12:00",
"status_link": "/v1/session/90730844-094d-45a5-9b90-d661d14d9444/status",
"stop_time": "2020-04-24T12:00",
"templateName": "my-session-template"
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Session details | Inline |
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/v1/session/{session_id} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id} \
-H 'Accept: application/problem+json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v1/session/{session_id}
Delete session by ID
Delete session by session ID.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
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/v1/session/{session_id}/status HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/session/{session_id}/status
A list of the statuses for the different boot sets.
A list of the statuses for the different boot sets.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
Example responses
200 Response
{
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"boot_sets": [
"string"
],
"id": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of Boot Set Statuses and metadata | V1SessionStatus |
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/v1/session/{session_id}/status HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v1/session/{session_id}/status
Create the initial session status
Creates the initial session status.
Body parameter
{
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"boot_sets": [
"string"
],
"id": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V1SessionStatus | true | A JSON object for creating the status for a session |
session_id | path | string | true | Session ID |
Example responses
200 Response
{
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"boot_sets": [
"string"
],
"id": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of Boot Set Statuses and metadata | V1SessionStatus |
400 | Bad Request | Bad Request | ProblemDetails |
409 | Conflict | The resource to be created already exists | 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/v1/session/{session_id}/status 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/v1/session/{session_id}/status \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v1/session/{session_id}/status
Update the session status
Update the session status. You can update the start or stop times.
Body parameter
{
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V1GenericMetadata | true | A JSON object for updating the status for a session |
session_id | path | string | true | Session ID |
Example responses
200 Response
{
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"boot_sets": [
"string"
],
"id": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of Boot Set Statuses and metadata | V1SessionStatus |
404 | Not Found | Bad Request | 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/v1/session/{session_id}/status HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status \
-H 'Accept: application/problem+json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v1/session/{session_id}/status
Delete the session status
Deletes an existing Session status
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
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 |
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/v1/session/{session_id}/status/{boot_set_name} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/session/{session_id}/status/{boot_set_name}
Get the status for a boot set.
Get the status for a boot set.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
boot_set_name | path | string | true | Boot set name |
Example responses
200 Response
{
"name": "Boot-Set",
"session": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"phases": [
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
],
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Metadata and a list of the Phase Statuses for the Boot Set | V1BootSetStatus |
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/v1/session/{session_id}/status/{boot_set_name} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /v1/session/{session_id}/status/{boot_set_name}
Create a Boot Set Status
Create a status for a Boot Set
Body parameter
{
"name": "Boot-Set",
"session": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"phases": [
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
],
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V1BootSetStatus | true | A JSON object for creating a status for a Boot Set |
session_id | path | string | true | Session ID |
boot_set_name | path | string | true | Boot set name |
Example responses
201 Response
{
"name": "Boot-Set",
"session": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"phases": [
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
],
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
201 | Created | The created Boot Set status | V1BootSetStatus |
409 | Conflict | The resource to be created already exists | 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/v1/session/{session_id}/status/{boot_set_name} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /v1/session/{session_id}/status/{boot_set_name}
Update the status.
This will change the status for one or more nodes within the boot set.
Body parameter
[
{
"update_type": "string",
"phase": "Boot",
"data": {
"phase": "Boot",
"source": "Succeeded",
"destination": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
]
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | any | true | A JSON object for updating the status for a session |
session_id | path | string | true | Session ID |
boot_set_name | path | string | true | Boot set name |
Example responses
200 Response
{
"name": "Boot-Set",
"session": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"phases": [
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
],
"links": [
{
"href": "string",
"rel": "string"
}
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of Boot Set Statuses and metadata | V1BootSetStatus |
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/v1/session/{session_id}/status/{boot_set_name} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/problem+json
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name} \
-H 'Accept: application/problem+json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'Authorization': 'Bearer {access-token}'
}
r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/problem+json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /v1/session/{session_id}/status/{boot_set_name}
Delete the Boot Set status
Deletes an existing Boot Set status
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
boot_set_name | path | string | true | Boot set name |
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/v1/session/{session_id}/status/{boot_set_name}/{phase_name} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}/{phase_name} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}/{phase_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}/{phase_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/session/{session_id}/status/{boot_set_name}/{phase_name}
Get the status for a specific boot set and phase.
Get the status for a specific boot set and phase.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
boot_set_name | path | string | true | Boot set name |
phase_name | path | string | true | The phase name |
Example responses
200 Response
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of the nodes in the Phase and Category | V1PhaseStatus |
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/v1/session/{session_id}/status/{boot_set_name}/{phase_name}/{category_name} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}/{phase_name}/{category_name} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}/{phase_name}/{category_name}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v1/session/{session_id}/status/{boot_set_name}/{phase_name}/{category_name}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v1/session/{session_id}/status/{boot_set_name}/{phase_name}/{category_name}
Get the status for a specific boot set, phase, and category.
Get the status for a specific boot set, phase, and category.
Name | In | Type | Required | Description |
---|---|---|---|---|
session_id | path | string | true | Session ID |
boot_set_name | path | string | true | Boot set name |
phase_name | path | string | true | The phase name |
category_name | path | string | true | The category name |
Example responses
200 Response
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | A list of the nodes in the Phase and Category | V1PhaseCategoryStatus |
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 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
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates \
-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/sessiontemplates', 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/sessiontemplates", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /v2/sessiontemplates
List session templates
List all session templates. Session templates are uniquely identified by the name.
Example responses
200 Response
[
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | SessionTemplateArray |
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
# 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 '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/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"},
"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 | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
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
# 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 '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/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"},
"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 | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | Inline |
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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/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"},
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "cle-1.0.0",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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
# 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 '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/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"},
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "cle-1.0.0",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'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"},
"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 | string | true | Session Template ID |
session_template_id: Session Template ID
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version.
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",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/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"},
"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 set(s) defined in the session template.
Body parameter
{
"name": "session-20190728032600",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"stage": false,
"include_disabled": false
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2SessionCreate | true | The information to create a session |
Example responses
201 Response
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions \
-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/sessions', 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/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 | string | false | Return only sessions older than the given age. Age is given in the format “1d” or “6h” |
max_age | query | string | false | Return only sessions younger than the given age. Age is given in the format “1d” or “6h” |
status | query | string | false | Return only sessions with the given status. |
Parameter | Value |
---|---|
status | pending |
status | running |
status | complete |
Example responses
200 Response
[
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessions \
-H 'Accept: application/problem+json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'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"},
"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 | string | false | Return only sessions older than the given age. Age is given in the format “1d” or “6h” |
max_age | query | string | false | Return only sessions younger than the given age. Age is given in the format “1d” or “6h” |
status | query | string | false | Return only sessions with the given status. |
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
# 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 '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/sessions/{session_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/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 | string | true | Session ID |
session_id: Session ID
BOS v2 session IDs must be 1-45 characters in length and match the following regular expression: ^a-z0-9?(.a-z0-9?)*$
These restrictions are not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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
# 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 '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/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"},
"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 a single session
Update the state for a given session in the BOS database
Body parameter
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"stage": true,
"components": "string",
"include_disabled": true,
"status": {
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Session | true | The state for a single session |
session_id | path | string | true | Session ID |
session_id: Session ID
BOS v2 session IDs must be 1-45 characters in length and match the following regular expression: ^a-z0-9?(.a-z0-9?)*$
These restrictions are not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'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"},
"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 | string | true | Session ID |
session_id: Session ID
BOS v2 session IDs must be 1-45 characters in length and match the following regular expression: ^a-z0-9?(.a-z0-9?)*$
These restrictions are not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
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
# 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 '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/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"},
"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 | string | true | Session ID |
session_id: Session ID
BOS v2 session IDs must be 1-45 characters in length and match the following regular expression: ^a-z0-9?(.a-z0-9?)*$
These restrictions are not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'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"},
"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 | string | true | Session ID |
session_id: Session ID
BOS v2 session IDs must be 1-45 characters in length and match the following regular expression: ^a-z0-9?(.a-z0-9?)*$
These restrictions are not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/components \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/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 | string | false | Retrieve the components with the given ID (e.g. xname for hardware components). Can be chained for selecting groups of components. |
session | query | string | false | Retrieve the components with the given session ID. |
staged_session | query | string | false | Retrieve the components with the given staged session ID. |
enabled | query | boolean | false | Retrieve the components with the “enabled” state. |
phase | query | string | false | Retrieve the components in the given phase. |
status | query | string | false | Retrieve the components with the given status. |
Example responses
200 Response
[
{
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/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"},
"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": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
}
]
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2ComponentArray | true | The state for an array of components |
Example responses
200 Response
[
{
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"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
# 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 '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/components', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("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": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
},
"filters": {
"ids": "string",
"session": "string"
}
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | any | true | The state for an array of components |
Example responses
200 Response
[
{
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"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
# 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 '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/components/{component_id}', headers = headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/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 | string | true | Component ID. e.g. xname for hardware components |
component_id: Component ID. e.g. xname for hardware components
It is recommended that this should be 1-127 characters in length.
This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.put('https://api-gw-service-nmn.local/apis/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"},
"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": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Component | true | The state for a single component |
component_id | path | string | true | Component ID. e.g. xname for hardware components |
component_id: Component ID. e.g. xname for hardware components
It is recommended that this should be 1-127 characters in length.
This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"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
# 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 '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/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"},
"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": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string"
},
"last_action": {
"action": "string",
"failed": true
},
"event_stats": {
"power_on_attempts": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Component | true | The state for a single component |
component_id | path | string | true | Component ID. e.g. xname for hardware components |
component_id: Component ID. e.g. xname for hardware components
It is recommended that this should be 1-127 characters in length.
This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
Example responses
200 Response
{
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Accept': 'application/problem+json',
'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"},
"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 | string | true | Component ID. e.g. xname for hardware components |
component_id: Component ID. e.g. xname for hardware components
It is recommended that this should be 1-127 characters in length.
This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version.
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
# 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 'Authorization: Bearer {access-token}'
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.post('https://api-gw-service-nmn.local/apis/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"},
"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. |
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
{
"cleanup_completed_session_ttl": "string",
"clear_stage": true,
"component_actual_state_ttl": "string",
"disable_components_on_completion": true,
"discovery_frequency": 0,
"logging_level": "string",
"max_boot_wait_time": 0,
"max_power_on_wait_time": 0,
"max_power_off_wait_time": 0,
"polling_frequency": 0,
"default_retry_policy": 1,
"max_component_batch_size": 1000,
"session_limit_required": true
}
Name | In | Type | Required | Description |
---|---|---|---|---|
body | body | V2Options | true | Service-wide options |
Example responses
200 Response
{
"cleanup_completed_session_ttl": "string",
"clear_stage": true,
"component_actual_state_ttl": "string",
"disable_components_on_completion": true,
"discovery_frequency": 0,
"logging_level": "string",
"max_boot_wait_time": 0,
"max_power_on_wait_time": 0,
"max_power_off_wait_time": 0,
"polling_frequency": 0,
"default_retry_policy": 1,
"max_component_batch_size": 1000,
"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
{
"cleanup_completed_session_ttl": "string",
"clear_stage": true,
"component_actual_state_ttl": "string",
"disable_components_on_completion": true,
"discovery_frequency": 0,
"logging_level": "string",
"max_boot_wait_time": 0,
"max_power_on_wait_time": 0,
"max_power_off_wait_time": 0,
"polling_frequency": 0,
"default_retry_policy": 1,
"max_component_batch_size": 1000,
"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
{
"dbStatus": "string",
"apiStatus": "string"
}
Service health status
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
dbStatus | string | false | none | none |
apiStatus | string | false | none | none |
{
"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 | [Link] | false | none | [Link to other resources] |
{
"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. |
{
"href": "string",
"rel": "string"
}
Link to other resources
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
href | string | false | none | none |
rel | string | false | none | none |
{
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
}
CFS Parameters is the collection of parameters that are passed to the Configuration Framework Service when configuration is enabled.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
clone_url | string | false | none | The clone URL for the repository providing the configuration. (DEPRECATED) It is recommended that this should be 1-4096 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
branch | string | false | none | The name of the branch containing the configuration that you want to apply to the nodes. Mutually exclusive with commit. (DEPRECATED) It is recommended that this should be 1-1023 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
commit | string | false | none | The commit ID of the configuration that you want to apply to the nodes. Mutually exclusive with branch. (DEPRECATED) git commit hashes are hexadecimal strings with a length of 40 characters (although fewer characters may be sufficient to uniquely identify a commit in some cases). This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
playbook | string | false | none | The name of the playbook to run for configuration. The file path must be specified relative to the base directory of the config repo. (DEPRECATED) It is recommended that this should be 1-255 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
configuration | string | false | none | The name of configuration to be applied. It is recommended that this should be no more than 127 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
true
Is the object’s status complete
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | boolean | false | none | Is the object’s status complete |
0
How many errors were encountered
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | integer | false | none | How many errors were encountered |
false
Is the object still doing something
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | boolean | false | none | Is the object still doing something |
"2020-04-24T12:00"
The start time
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The start time |
"2020-04-24T12:00"
The stop time
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The stop time |
{
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
}
The status metadata
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
complete | V1CompleteMetadata | false | none | Is the object’s status complete |
error_count | V1ErrorCountMetadata | false | none | How many errors were encountered |
in_progress | V1InProgressMetadata | false | none | Is the object still doing something |
start_time | V1StartTimeMetadata | false | none | The start time |
stop_time | V1StopTimeMetadata | false | none | The stop time |
[
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
A list of node xnames.
None
"Succeeded"
Name of the Phase Category not_started, in_progress, succeeded, failed, or excluded
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Name of the Phase Category not_started, in_progress, succeeded, failed, or excluded |
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
A list of the nodes in a given category within a phase.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | V1PhaseCategoryName | false | none | Name of the Phase Category not_started, in_progress, succeeded, failed, or excluded |
node_list | V1NodeList | false | none | A list of node xnames. |
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
The phase’s status. It is a list of all of the nodes in the phase and what category those nodes fall into within the phase.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | Name of the Phase boot, configure, or shutdown |
metadata | V1GenericMetadata | false | none | The status metadata |
categories | [V1PhaseCategoryStatus] | false | none | [A list of the nodes in a given category within a phase. ## Link Relationships * self : The session object ] |
errors | V1NodeErrorsList | false | none | Categorizing nodes into failures by the type of error they have. This is an additive characterization. Nodes will be added to existing errors. This does not overwrite previously existing errors. |
"8deb0746-b18c-427c-84a8-72ec6a28642c"
Unique BOS v1 session identifier.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string(uuid) | false | none | Unique BOS v1 session identifier. |
{
"name": "Boot-Set",
"session": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"phases": [
{
"name": "Boot",
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"categories": [
{
"name": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
],
"errors": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
],
"links": [
{
"href": "string",
"rel": "string"
}
]
}
The status for a Boot Set. It as a list of the phase statuses for the Boot Set.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | Name of the Boot Set |
session | V1SessionId | false | none | Unique BOS v1 session identifier. |
metadata | V1GenericMetadata | false | none | The status metadata |
phases | [V1PhaseStatus] | false | none | [The phase’s status. It is a list of all of the nodes in the phase and what category those nodes fall into within the phase. ## Link Relationships * self : The session object ] |
links | [Link] | false | none | [Link to other resources] |
{
"metadata": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
},
"boot_sets": [
"string"
],
"id": "8deb0746-b18c-427c-84a8-72ec6a28642c",
"links": [
{
"href": "string",
"rel": "string"
}
]
}
The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
metadata | V1GenericMetadata | false | none | The status metadata |
boot_sets | [string] | false | none | The boot sets in the Session |
id | V1SessionId | false | none | Unique BOS v1 session identifier. |
links | [Link] | false | none | [Link to other resources] |
{
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
A boot set defines a collection of nodes and the information about the boot artifacts and parameters to be sent to each node over the specified network to enable these nodes to boot. When multiple boot sets are used in a session template, the boot_ordinal and shutdown_ordinal indicate the order in which boot sets need to be acted upon. Boot sets sharing the same ordinal number will be addressed at the same time.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | The Boot Set name. It is recommended that: * Boot Set names should be 1-127 characters in length. * Boot Set names should use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names should begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version. |
boot_ordinal | integer | false | none | The boot ordinal. This will establish the order for boot set operations. Boot sets boot in order from the lowest to highest boot_ordinal. It is recommended that this should have a maximum value of 65535. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
shutdown_ordinal | integer | false | none | The shutdown ordinal. This will establish the order for boot set shutdown operations. Sets shutdown from low to high shutdown_ordinal. It is recommended that this should have a maximum value of 65535. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
path | string | true | none | A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc. It will be processed based on the type attribute. It is recommended that this should be 1-4095 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
type | string | true | none | The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute. It is recommended that this should be 1-127 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
etag | 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. ETags are defined as being 1-65536 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
kernel_parameters | string | false | none | The kernel parameters to use to boot the nodes. Linux kernel parameters may never exceed 4096 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
network | string | false | none | The network over which the node will boot. Choices: NMN – Node Management Network |
node_list | [string] | false | none | The node list. This is an explicit mapping against hardware xnames. It is recommended that this list should be 1-65535 items in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
node_roles_groups | [string] | false | none | The node roles list. Allows actions against nodes with associated roles. It is recommended that this list should be 1-1023 items in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
node_groups | [string] | false | none | The node groups list. Allows actions against associated nodes by logical groupings. It is recommended that this list should be 1-4095 items in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
rootfs_provider | string | false | none | The root file system provider. It is recommended that this should be 1-511 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
rootfs_provider_passthrough | string | false | none | The root file system provider passthrough. These are additional kernel parameters that will be appended to the ‘rootfs= Linux kernel parameters may never exceed 4096 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
"cle-1.0.0"
Name of the Session Template.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | Name of the Session Template. |
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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 when combined with an action (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job to complete the required tasks for the operation.
A Session Template can be created from a JSON structure. It will return a SessionTemplate name if successful. This name is required when creating a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | true | none | Name of the Session Template. It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
description | string | false | none | An optional description for the session template. It is recommended that this should be 1-1023 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
cfs_url | string | false | none | The URL for the repository providing the configuration. DEPRECATED It is recommended that this should be 1-4096 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
cfs_branch | string | false | none | The name of the branch containing the configuration that you want to apply to the nodes. DEPRECATED. It is recommended that this should be 1-1023 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
enable_cfs | boolean | false | none | Whether to enable the Configuration Framework Service (CFS). |
cfs | V1CfsParameters | false | none | CFS Parameters is the collection of parameters that are passed to the Configuration Framework Service when configuration is enabled. |
partition | string | false | none | The machine partition to operate on. It is recommended that this should be 1-255 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
boot_sets | object | false | none | Mapping from Boot Set names to Boot Sets. It is recommended that: * At least one Boot Set should be defined, because a Session Template with no Boot Sets is not functional. * Boot Set names should be 1-127 characters in length. * Boot Set names should use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names should begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version. |
» additionalProperties | V1BootSet | false | none | A boot set defines a collection of nodes and the information about the boot artifacts and parameters to be sent to each node over the specified network to enable these nodes to boot. When multiple boot sets are used in a session template, the boot_ordinal and shutdown_ordinal indicate the order in which boot sets need to be acted upon. Boot sets sharing the same ordinal number will be addressed at the same time. |
links | [Link] | false | read-only | [Link to other resources] |
"boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0"
The identity of the Kubernetes job that is created to handle the session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | read-only | The identity of the Kubernetes job that is created to handle the session. |
"boot"
A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation. Operation – An operation to perform on nodes in this session.
Boot Boot nodes that are off.
Configure Reconfigure the nodes using the Configuration Framework
Service (CFS).
Reboot Gracefully power down nodes that are on and then power
them back up.
Shutdown Gracefully power down nodes that are on.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation. Operation – An operation to perform on nodes in this session. Boot Boot nodes that are off. Configure Reconfigure the nodes using the Configuration Framework Service (CFS). Reboot Gracefully power down nodes that are on and then power them back up. Shutdown Gracefully power down nodes that are on. |
"my-session-template"
The name of the Session Template
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but will be enforced in a future version.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
"my-session-template"
DEPRECATED - use templateName. This field is ignored if templateName is also set.
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but will be enforced in a future version.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | DEPRECATED - use templateName. This field is ignored if templateName is also set. It is recommended to use names which meet the following restrictions: * Length of 1-127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
{
"href": "string",
"jobId": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"rel": "session",
"type": "GET"
}
Link to other resources
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
href | string | false | none | none |
jobId | V1BoaKubernetesJob | false | none | The identity of the Kubernetes job that is created to handle the session. |
rel | string | false | none | none |
type | string | false | none | none |
Property | Value |
---|---|
rel | session |
rel | status |
type | GET |
"/v1/session/90730844-094d-45a5-9b90-d661d14d9444/status"
URI to the status for this session
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string(uri) | false | none | URI to the status for this session |
{
"complete": true,
"error_count": 0,
"in_progress": false,
"job": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"operation": "boot",
"start_time": "2020-04-24T12:00",
"status_link": "/v1/session/90730844-094d-45a5-9b90-d661d14d9444/status",
"stop_time": "2020-04-24T12:00",
"templateName": "my-session-template"
}
Details about a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
complete | V1CompleteMetadata | false | none | Is the object’s status complete |
error_count | V1ErrorCountMetadata | false | none | How many errors were encountered |
in_progress | V1InProgressMetadata | false | none | Is the object still doing something |
job | V1BoaKubernetesJob | false | none | The identity of the Kubernetes job that is created to handle the session. |
operation | V1Operation | false | none | A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation. Operation – An operation to perform on nodes in this session. Boot Boot nodes that are off. Configure Reconfigure the nodes using the Configuration Framework Service (CFS). Reboot Gracefully power down nodes that are on and then power them back up. Shutdown Gracefully power down nodes that are on. |
start_time | V1StartTimeMetadata | false | none | The start time |
status_link | V1SessionStatusUri | false | none | URI to the status for this session |
stop_time | V1StopTimeMetadata | false | none | The stop time |
templateName | V1TemplateName | false | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
{
"complete": true,
"error_count": 0,
"in_progress": false,
"job": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"operation": "boot",
"start_time": "2020-04-24T12:00",
"status_link": "/v1/session/90730844-094d-45a5-9b90-d661d14d9444/status",
"stop_time": "2020-04-24T12:00",
"templateName": "my-session-template"
}
Details about a Session using templateUuid instead of templateName. DEPRECATED – these will only exist from sessions created before templateUuid was deprecated.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
complete | V1CompleteMetadata | false | none | Is the object’s status complete |
error_count | V1ErrorCountMetadata | false | none | How many errors were encountered |
in_progress | V1InProgressMetadata | false | none | Is the object still doing something |
job | V1BoaKubernetesJob | false | none | The identity of the Kubernetes job that is created to handle the session. |
operation | V1Operation | false | none | A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation. Operation – An operation to perform on nodes in this session. Boot Boot nodes that are off. Configure Reconfigure the nodes using the Configuration Framework Service (CFS). Reboot Gracefully power down nodes that are on and then power them back up. Shutdown Gracefully power down nodes that are on. |
start_time | V1StartTimeMetadata | false | none | The start time |
status_link | V1SessionStatusUri | false | none | URI to the status for this session |
stop_time | V1StopTimeMetadata | false | none | The stop time |
templateName | V1TemplateName | false | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
{
"operation": "boot",
"templateUuid": "my-session-template",
"templateName": "my-session-template",
"job": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"limit": "string",
"links": [
{
"href": "string",
"jobId": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"rel": "session",
"type": "GET"
}
]
}
A Session object specified by templateName
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
operation | V1Operation | true | none | A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation. Operation – An operation to perform on nodes in this session. Boot Boot nodes that are off. Configure Reconfigure the nodes using the Configuration Framework Service (CFS). Reboot Gracefully power down nodes that are on and then power them back up. Shutdown Gracefully power down nodes that are on. |
templateUuid | V1TemplateUuid | false | none | DEPRECATED - use templateName. This field is ignored if templateName is also set. It is recommended to use names which meet the following restrictions: * Length of 1-127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
templateName | V1TemplateName | true | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
job | V1BoaKubernetesJob | false | none | The identity of the Kubernetes job that is created to handle the session. |
limit | string | false | none | A comma-separated 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. It is recommended that this should be 1-65535 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
links | [V1SessionLink] | false | read-only | [Link to other resources] |
{
"operation": "boot",
"templateUuid": "my-session-template",
"job": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"limit": "string",
"links": [
{
"href": "string",
"jobId": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0",
"rel": "session",
"type": "GET"
}
]
}
A Session object specified by templateUuid (DEPRECATED – use templateName)
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
operation | V1Operation | true | none | A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation. Operation – An operation to perform on nodes in this session. Boot Boot nodes that are off. Configure Reconfigure the nodes using the Configuration Framework Service (CFS). Reboot Gracefully power down nodes that are on and then power them back up. Shutdown Gracefully power down nodes that are on. |
templateUuid | V1TemplateUuid | true | none | DEPRECATED - use templateName. This field is ignored if templateName is also set. It is recommended to use names which meet the following restrictions: * Length of 1-127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
job | V1BoaKubernetesJob | false | none | The identity of the Kubernetes job that is created to handle the session. |
limit | string | false | none | A comma-separated 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. It is recommended that this should be 1-65535 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
links | [V1SessionLink] | false | read-only | [Link to other resources] |
"Boot"
The phase that this data belongs to (boot, shutdown, or configure). Or it can be set to “boot_set” to indicate that it belongs to the Boot Set itself.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The phase that this data belongs to (boot, shutdown, or configure). Or it can be set to “boot_set” to indicate that it belongs to the Boot Set itself. |
{
"phase": "Boot",
"source": "Succeeded",
"destination": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
The information used to update the status of a node list. It moves nodes from one category to another within a phase.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
phase | V1PhaseName | true | none | The phase that this data belongs to (boot, shutdown, or configure). Or it can be set to “boot_set” to indicate that it belongs to the Boot Set itself. |
source | V1PhaseCategoryName | true | none | Name of the Phase Category not_started, in_progress, succeeded, failed, or excluded |
destination | V1PhaseCategoryName | true | none | Name of the Phase Category not_started, in_progress, succeeded, failed, or excluded |
node_list | V1NodeList | true | none | A list of node xnames. |
{
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
Categorizing nodes into failures by the type of error they have. This is an additive characterization. Nodes will be added to existing errors. This does not overwrite previously existing errors.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
additionalProperties | V1NodeList | false | none | A list of node xnames. |
[
{
"update_type": "string",
"phase": "Boot",
"data": {
"phase": "Boot",
"source": "Succeeded",
"destination": "Succeeded",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
]
This is the payload sent during an update request. It contains updates to which categories nodes are in.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
update_type | string | false | none | The type of update data |
phase | V1PhaseName | false | none | The phase that this data belongs to (boot, shutdown, or configure). Or it can be set to “boot_set” to indicate that it belongs to the Boot Set itself. |
data | V1NodeChangeList | false | none | The information used to update the status of a node list. It moves nodes from one category to another within a phase. |
[
{
"update_type": "string",
"phase": "Boot",
"data": {
"property1": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"property2": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
]
}
}
]
This is the payload sent during an update request. It contains updates to which errors have occurred and which nodes encountered those errors
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
update_type | string | false | none | The type of update data |
phase | V1PhaseName | false | none | The phase that this data belongs to (boot, shutdown, or configure). Or it can be set to “boot_set” to indicate that it belongs to the Boot Set itself. |
data | V1NodeErrorsList | false | none | Categorizing nodes into failures by the type of error they have. This is an additive characterization. Nodes will be added to existing errors. This does not overwrite previously existing errors. |
[
{
"update_type": "string",
"phase": "Boot",
"data": {
"complete": true,
"error_count": 0,
"in_progress": false,
"start_time": "2020-04-24T12:00",
"stop_time": "2020-04-24T12:00"
}
}
]
This is the payload sent during an update request. It contains updates to metadata, specifically start and stop times
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
update_type | string | false | none | The type of update data |
phase | V1PhaseName | false | none | The phase that this data belongs to (boot, shutdown, or configure). Or it can be set to “boot_set” to indicate that it belongs to the Boot Set itself. |
data | V1GenericMetadata | false | none | The status metadata |
{
"configuration": "compute-23.4.0"
}
CFS Parameters 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 | string | false | none | The name of configuration to be applied. |
{
"name": "cle-1.0.0",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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.
A Session Template can be created from a JSON structure. It will return a SessionTemplate name if successful. This name is required when creating a Session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | read-only | Name of the Session Template. It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
description | string | false | none | An optional description for the session template. It is recommended that this should be 1-1023 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
enable_cfs | boolean | false | none | Whether to enable the Configuration Framework Service (CFS). |
cfs | V2CfsParameters | false | none | CFS Parameters 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 | false | none | Mapping from Boot Set names to Boot Sets. It is recommended that: * At least one Boot Set should be defined, because a Session Template with no Boot Sets is not functional. * Boot Set names should be 1-127 characters in length. * Boot Set names should use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names should begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version. |
» 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. |
links | [Link] | false | read-only | [Link 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. |
"my-session-template"
The name of the Session Template
It is recommended to use names which meet the following restrictions:
These restrictions are not enforced in this version of BOS, but will be enforced in a future version.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | string | false | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
{
"name": "session-20190728032600",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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 | string | false | none | Name of the session. A UUID name is generated if a name is not provided. |
operation | string | 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 nodes 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 nodes that are on. |
template_name | V2TemplateName | true | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
limit | string | false | none | A comma-separated 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. It is recommended that this should be 1-65535 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
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) |
Property | Value |
---|---|
operation | boot |
operation | reboot |
operation | shutdown |
{
"start_time": "string",
"end_time": "string",
"status": "pending",
"error": "string"
}
Information on the status of a session.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
start_time | string | false | none | When the session was created. |
end_time | string¦null | false | none | When the session completed. A null value means the session has not ended. |
status | string | 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. |
Property | Value |
---|---|
status | pending |
status | running |
status | complete |
{
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"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.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
name | string | false | none | The Boot Set name. It is recommended that: * Boot Set names should be 1-127 characters in length. * Boot Set names should use only letters, digits, periods (.), dashes (-), and underscores (_). * Boot Set names should begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but they are targeted to start being enforced in an upcoming BOS version. |
path | string | true | none | A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc. It will be processed based on the type attribute. It is recommended that this should be 1-4095 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
cfs | V2CfsParameters | false | none | CFS Parameters 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 | string | true | none | The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute. It is recommended that this should be 1-127 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
etag | 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. ETags are defined as being 1-65536 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
kernel_parameters | string | false | none | The kernel parameters to use to boot the nodes. Linux kernel parameters may never exceed 4096 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
node_list | [string] | false | none | The node list. This is an explicit mapping against hardware xnames. It is recommended that this list should be 1-65535 items in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
node_roles_groups | [string] | false | none | The node roles list. Allows actions against nodes with associated roles. It is recommended that this list should be 1-1023 items in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
node_groups | [string] | false | none | The node groups list. Allows actions against associated nodes by logical groupings. It is recommended that this list should be 1-4095 items in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
rootfs_provider | string | false | none | The root file system provider. It is recommended that this should be 1-511 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
rootfs_provider_passthrough | string | false | none | The root file system provider passthrough. These are additional kernel parameters that will be appended to the ‘rootfs= Linux kernel parameters may never exceed 4096 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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 | string | false | none | Name of the session. |
operation | 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 nodes 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 nodes that are on. |
template_name | V2TemplateName | false | none | The name of the Session Template It is recommended to use names which meet the following restrictions: * Maximum length of 127 characters. * Use only letters, digits, periods (.), dashes (-), and underscores (_). * Begin and end with a letter or digit. These restrictions are not enforced in this version of BOS, but will be enforced in a future version. |
limit | string | false | none | A comma-separated 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. |
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. |
Property | Value |
---|---|
operation | boot |
operation | reboot |
operation | shutdown |
[
{
"name": "string",
"operation": "boot",
"template_name": "my-session-template",
"limit": "string",
"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 | string | false | none | When the session was created. |
end_time | string¦null | false | none | When the session completed. A null value means the session has not ended. |
duration | string | false | none | The current duration of the on-going 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 | string | 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. |
Property | Value |
---|---|
status | pending |
status | running |
status | complete |
{
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
}
A collection of boot artifacts.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
kernel | string | false | none | An md5sum hash of the kernel ID |
kernel_parameters | string | false | none | Kernel parameters |
initrd | string | false | none | Initrd ID |
{
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"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 | 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. |
last_updated | string(date-time) | false | read-only | The date/time when the state was last updated in RFC 3339 format. |
{
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"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 | string | false | none | A CFS configuration ID. |
bss_token | string | false | none | A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten. |
last_updated | string(date-time) | false | read-only | The date/time when the state was last updated in RFC 3339 format. |
{
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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 | string | false | none | A CFS configuration ID. |
session | string | false | none | A session which can be triggered at a later time against this component. |
last_updated | string(date-time) | false | read-only | 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 | string(date-time) | false | read-only | 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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
}
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. |
{
"phase": "string",
"status": "string",
"status_override": "string"
}
Status information for the component
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
phase | string | 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": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
}
The current and desired artifacts state for a component.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
id | string | false | none | The component’s ID. e.g. xname for hardware components It is recommended that this should be 1-127 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
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 | string | false | none | The session responsible for the component’s current state |
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": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
}
]
An array of component states.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [V2Component] | false | none | An array of component states. |
{
"ids": "string",
"session": "string"
}
Information for patching multiple components.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
ids | string | false | none | A comma-separated list of component IDs It is recommended that this should be 1-65535 characters in length. This restriction is not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
session | string | false | none | A session name. All components part of this session will be patched. BOS v2 session names must be 1-45 characters in length and match the following regular expression: ^a-z0-9?(.a-z0-9?)*$ These restrictions are not enforced in this version of BOS, but it is targeted to start being enforced in an upcoming BOS version. |
{
"patch": {
"id": "x3001c0s39b0n0",
"actual_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"desired_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"bss_token": "string",
"last_updated": "2019-07-28T03:26:00Z"
},
"staged_state": {
"boot_artifacts": {
"kernel": "string",
"kernel_parameters": "string",
"initrd": "string"
},
"configuration": "string",
"session": "string",
"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": 0,
"power_off_graceful_attempts": 0,
"power_off_forceful_attempts": 0
},
"status": {
"phase": "string",
"status": "string",
"status_override": "string"
},
"enabled": true,
"error": "string",
"session": "string",
"retry_policy": 1
},
"filters": {
"ids": "string",
"session": "string"
}
}
Information for patching multiple components.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
patch | V2Component | true | none | The current and desired artifacts state for a component. |
filters | V2ComponentsFilter | true | none | Information for patching multiple components. |
{
"xnames": [
"string"
]
}
A list of components that should have their staged session applied.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
xnames | [string] | false | none | The list of component xnames |
{
"succeeded": [
"string"
],
"failed": [
"string"
],
"ignored": [
"string"
]
}
A list of components that should have their staged session applied.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
succeeded | [string] | false | none | The list of component xnames |
failed | [string] | false | none | The list of component xnames |
ignored | [string] | false | none | The list of component xnames |
{
"cleanup_completed_session_ttl": "string",
"clear_stage": true,
"component_actual_state_ttl": "string",
"disable_components_on_completion": true,
"discovery_frequency": 0,
"logging_level": "string",
"max_boot_wait_time": 0,
"max_power_on_wait_time": 0,
"max_power_off_wait_time": 0,
"polling_frequency": 0,
"default_retry_policy": 1,
"max_component_batch_size": 1000,
"session_limit_required": true
}
Options for the Boot Orchestration Service.
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
cleanup_completed_session_ttl | string | false | none | Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior. |
clear_stage | boolean | false | none | Allows components 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 hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically. |
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) |
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_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) |
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) |
polling_frequency | integer | false | none | How frequently the BOS operators check component state for needed actions. (in seconds) |
default_retry_policy | integer | false | none | The default maximum number attempts per node for failed actions. |
max_component_batch_size | integer | false | none | The maximum number of Components that a BOS operator will process at once. 0 means no limit. |
session_limit_required | boolean | false | none | If true, BOS v2 Sessions cannot be created without specifying the limit parameter. |
[
{
"name": "cle-1.0.0",
"description": "string",
"cfs_url": "string",
"cfs_branch": "string",
"enable_cfs": true,
"cfs": {
"clone_url": "string",
"branch": "string",
"commit": "string",
"playbook": "string",
"configuration": "compute-23.4.0"
},
"partition": "string",
"boot_sets": {
"property1": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
},
"property2": {
"name": "compute",
"boot_ordinal": 0,
"shutdown_ordinal": 0,
"path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
"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_lim it=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
"network": "string",
"node_list": [
"x3000c0s19b1n0",
"x3000c0s19b2n0"
],
"node_roles_groups": [
"Compute",
"Application"
],
"node_groups": [
"string"
],
"rootfs_provider": "cpss3",
"rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}
},
"links": [
{
"href": "string",
"rel": "string"
}
]
}
]
An array of session templates.
anyOf
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | V1SessionTemplate | false | none | A Session Template object represents a collection of resources and metadata. A session template is used to create a Session which when combined with an action (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job to complete the required tasks for the operation. A Session Template can be created from a JSON structure. It will return a SessionTemplate name if successful. This name is required when creating a Session. ## Link Relationships * self : The session object |
or
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | V2SessionTemplate | false | none | 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. A Session Template can be created from a JSON structure. It will return a SessionTemplate name if successful. This name is required when creating a Session. ## Link Relationships * self : The session object |