Boot Orchestration Service v2

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.

Resources

/sessiontemplate

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.

/session

A BOS session applies a provided action to the nodes defined in a session template.

Workflow

Create a New Session

GET /sessiontemplate

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.

POST /sessiontemplate

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.

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/{session_id}

Get session details by session ID.

List all in progress and completed sessions.

Interactions with Other APIs

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:

Authentication

  • HTTP Authentication, scheme: bearer

version

get__

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"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK A collection of Versions Inline

Response Schema

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

v1_get

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"
    }
  ]
}

Responses

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

v1_get_version

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"
    }
  ]
}

Responses

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

healthz

v1_get_healthz

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"
}

Responses

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

sessiontemplate

create_v1_sessiontemplate

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"
    }
  }
}

Parameters

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"

Responses

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

get_v1_sessiontemplates

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"
      }
    ]
  }
]

Responses

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

get_v1_sessiontemplate

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.

Parameters

Name In Type Required Description
session_template_id path string true Session Template ID

Detailed descriptions

session_template_id: Session Template ID

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 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"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Session template details Inline
404 Not Found The resource was not found. ProblemDetails

Response Schema

To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

delete_v1_sessiontemplate

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.

Parameters

Name In Type Required Description
session_template_id path string true Session Template ID

Detailed descriptions

session_template_id: Session Template ID

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 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"
}

Responses

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

get_v1_sessiontemplatetemplate

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"
    }
  ]
}

Responses

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

session

create_v1_session

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"
}

Parameters

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"
    }
  ]
}

Responses

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

get_v1_sessions

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"
]

Responses

Status Meaning Description Schema
200 OK A collection of Session IDs Inline

Response Schema

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

get_v1_session

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.

Parameters

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"
}

Responses

Status Meaning Description Schema
200 OK Session details Inline
404 Not Found The resource was not found. ProblemDetails

Response Schema

To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

delete_v1_session

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.

Parameters

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"
}

Responses

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

get_v1_session_status

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.

Parameters

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"
    }
  ]
}

Responses

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

create_v1_session_status

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"
    }
  ]
}

Parameters

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"
    }
  ]
}

Responses

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

update_v1_session_status

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"
}

Parameters

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"
    }
  ]
}

Responses

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

delete_v1_session_status

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

Parameters

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"
}

Responses

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

get_v1_session_status_by_bootset

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.

Parameters

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"
    }
  ]
}

Responses

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

create_v1_boot_set_status

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"
    }
  ]
}

Parameters

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"
    }
  ]
}

Responses

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

update_v1_session_status_by_bootset

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"
      ]
    }
  }
]

Parameters

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"
    }
  ]
}

Responses

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

delete_v1_boot_set_status

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

Parameters

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"
}

Responses

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

get_v1_session_status_by_bootset_and_phase

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.

Parameters

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"
    ]
  }
}

Responses

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

get_v1_session_status_by_bootset_and_phase_and_category

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.

Parameters

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"
  ]
}

Responses

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

v2

get_v2

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"
    }
  ]
}

Responses

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

get_v2_healthz

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"
}

Responses

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

get_v2_sessiontemplates

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"
      }
    ]
  }
]

Responses

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

validate_v2_sessiontemplate

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.

Parameters

Name In Type Required Description
session_template_id path string true Session Template ID

Detailed descriptions

session_template_id: Session Template ID

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 they are targeted to start being enforced in an upcoming BOS version.

Example responses

200 Response

"string"

Responses

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

get_v2_sessiontemplate

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.

Parameters

Name In Type Required Description
session_template_id path string true Session Template ID

Detailed descriptions

session_template_id: Session Template ID

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 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"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Session template details Inline
404 Not Found The resource was not found. ProblemDetails

Response Schema

To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

put_v2_sessiontemplate

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"
    }
  }
}

Parameters

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

Detailed descriptions

session_template_id: Session Template ID

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 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"
    }
  ]
}

Responses

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

patch_v2_sessiontemplate

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"
    }
  }
}

Parameters

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

Detailed descriptions

session_template_id: Session Template ID

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 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"
    }
  ]
}

Responses

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

delete_v2_sessiontemplate

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.

Parameters

Name In Type Required Description
session_template_id path string true Session Template ID

Detailed descriptions

session_template_id: Session Template ID

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 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"
}

Responses

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

get_v2_sessiontemplatetemplate

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"
    }
  ]
}

Responses

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

post_v2_session

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
}

Parameters

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"
  }
}

Responses

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

get_v2_sessions

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.

Parameters

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.

Enumerated Values

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"
    }
  }
]

Responses

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

delete_v2_sessions

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.

Parameters

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.

Enumerated Values

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"
}

Responses

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

get_v2_session

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.

Parameters

Name In Type Required Description
session_id path string true Session ID

Detailed descriptions

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"
  }
}

Responses

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

patch_v2_session

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"
  }
}

Parameters

Name In Type Required Description
body body V2Session true The state for a single session
session_id path string true Session ID

Detailed descriptions

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"
  }
}

Responses

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

delete_v2_session

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.

Parameters

Name In Type Required Description
session_id path string true Session ID

Detailed descriptions

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"
}

Responses

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

get_v2_session_status

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

Parameters

Name In Type Required Description
session_id path string true Session ID

Detailed descriptions

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"
  }
}

Responses

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

save_v2_session_status

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.

Parameters

Name In Type Required Description
session_id path string true Session ID

Detailed descriptions

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"
  }
}

Responses

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

get_v2_components

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.

Parameters

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
  }
]

Responses

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

put_v2_components

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
  }
]

Parameters

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
  }
]

Responses

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

patch_v2_components

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"
  }
}

Parameters

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
  }
]

Responses

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

get_v2_component

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

Parameters

Name In Type Required Description
component_id path string true Component ID. e.g. xname for hardware components

Detailed descriptions

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
}

Responses

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

put_v2_component

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
}

Parameters

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

Detailed descriptions

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
}

Responses

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

patch_v2_component

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
}

Parameters

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

Detailed descriptions

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
}

Responses

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

delete_v2_component

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

Parameters

Name In Type Required Description
component_id path string true Component ID. e.g. xname for hardware components

Detailed descriptions

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"
}

Responses

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

post_v2_apply_staged

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"
  ]
}

Parameters

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"
  ]
}

Responses

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

patch_v2_options

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
}

Parameters

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
}

Responses

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

get_version_v2

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"
    }
  ]
}

Responses

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

options

get_v2_options

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
}

Responses

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

Schemas

Healthz

{
  "dbStatus": "string",
  "apiStatus": "string"
}

Service health status

Properties

Name Type Required Restrictions Description
dbStatus string false none none
apiStatus string false none none

Version

{
  "major": "string",
  "minor": "string",
  "patch": "string",
  "links": [
    {
      "href": "string",
      "rel": "string"
    }
  ]
}

Version data

Properties

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]

ProblemDetails

{
  "type": "about:blank",
  "title": "string",
  "status": 400,
  "instance": "http://example.com",
  "detail": "string"
}

An error response for RFC 7807 problem details.

Properties

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

Properties

Name Type Required Restrictions Description
href string false none none
rel string false none none

V1CfsParameters

{
  "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.

Properties

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.

V1CompleteMetadata

true

Is the object’s status complete

Properties

Name Type Required Restrictions Description
anonymous boolean false none Is the object’s status complete

V1ErrorCountMetadata

0

How many errors were encountered

Properties

Name Type Required Restrictions Description
anonymous integer false none How many errors were encountered

V1InProgressMetadata

false

Is the object still doing something

Properties

Name Type Required Restrictions Description
anonymous boolean false none Is the object still doing something

V1StartTimeMetadata

"2020-04-24T12:00"

The start time

Properties

Name Type Required Restrictions Description
anonymous string false none The start time

V1StopTimeMetadata

"2020-04-24T12:00"

The stop time

Properties

Name Type Required Restrictions Description
anonymous string false none The stop time

V1GenericMetadata

{
  "complete": true,
  "error_count": 0,
  "in_progress": false,
  "start_time": "2020-04-24T12:00",
  "stop_time": "2020-04-24T12:00"
}

The status metadata

Properties

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

V1NodeList

[
  "x3000c0s19b1n0",
  "x3000c0s19b2n0"
]

A list of node xnames.

Properties

None

V1PhaseCategoryName

"Succeeded"

Name of the Phase Category not_started, in_progress, succeeded, failed, or excluded

Properties

Name Type Required Restrictions Description
anonymous string false none Name of the Phase Category
not_started, in_progress, succeeded, failed, or excluded

V1PhaseCategoryStatus

{
  "name": "Succeeded",
  "node_list": [
    "x3000c0s19b1n0",
    "x3000c0s19b2n0"
  ]
}

A list of the nodes in a given category within a phase.

  • self : The session object

Properties

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.

V1PhaseStatus

{
  "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.

  • self : The session object

Properties

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.

V1SessionId

"8deb0746-b18c-427c-84a8-72ec6a28642c"

Unique BOS v1 session identifier.

Properties

Name Type Required Restrictions Description
anonymous string(uuid) false none Unique BOS v1 session identifier.

V1BootSetStatus

{
  "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.

  • self : The session object
  • phase : A phase of the boot set

Properties

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]

V1SessionStatus

{
  "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.

  • self : The session object
  • boot sets: URL to access the Boot Set status

Properties

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]

V1BootSet

{
  "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.

Properties

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=’ kernel parameter

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.

V1SessionTemplateName

"cle-1.0.0"

Name of the Session Template.

Properties

Name Type Required Restrictions Description
anonymous string false none Name of the Session Template.

V1SessionTemplate

{
  "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.

  • self : The session object

Properties

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]

V1BoaKubernetesJob

"boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0"

The identity of the Kubernetes job that is created to handle the session.

Properties

Name Type Required Restrictions Description
anonymous string false read-only The identity of the Kubernetes job that is created to handle the session.

V1Operation

"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.

Properties

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.

V1TemplateName

"my-session-template"

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.

Properties

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.

V1TemplateUuid

"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:

  • 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.

Properties

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

Properties

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

Enumerated Values

Property Value
rel session
rel status
type GET

V1SessionStatusUri

"/v1/session/90730844-094d-45a5-9b90-d661d14d9444/status"

URI to the status for this session

Properties

Name Type Required Restrictions Description
anonymous string(uri) false none URI to the status for this session

V1SessionDetails

{
  "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.

Properties

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.

V1SessionDetailsByTemplateUuid

{
  "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.

Properties

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.

V1Session

{
  "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

  • self : The session object

Properties

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]

V1SessionByTemplateUuid

{
  "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)

  • self : The session object

Properties

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]

V1PhaseName

"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.

Properties

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.

V1NodeChangeList

{
  "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.

Properties

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.

V1NodeErrorsList

{
  "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.

Properties

Name Type Required Restrictions Description
additionalProperties V1NodeList false none A list of node xnames.

V1UpdateRequestNodeChangeList

[
  {
    "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.

Properties

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.

V1UpdateRequestNodeErrorsList

[
  {
    "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

Properties

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.

V1UpdateRequestGenericMetadata

[
  {
    "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

Properties

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

V2CfsParameters

{
  "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.

Properties

Name Type Required Restrictions Description
configuration string false none The name of configuration to be applied.

V2SessionTemplate

{
  "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.

  • self : The session object

Properties

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]

V2SessionTemplateValidation

"string"

Message describing errors or incompleteness in a Session Template.

Properties

Name Type Required Restrictions Description
anonymous string false none Message describing errors or incompleteness in a Session Template.

V2TemplateName

"my-session-template"

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.

Properties

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.

V2SessionCreate

{
  "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.

Properties

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)

Enumerated Values

Property Value
operation boot
operation reboot
operation shutdown

V2SessionStatus

{
  "start_time": "string",
  "end_time": "string",
  "status": "pending",
  "error": "string"
}

Information on the status of a session.

Properties

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.

Enumerated Values

Property Value
status pending
status running
status complete

V2BootSet

{
  "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.

Properties

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=’ kernel parameter

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.

V2Session

{
  "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

  • self : The session object

Properties

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.

Enumerated Values

Property Value
operation boot
operation reboot
operation shutdown

V2SessionArray

[
  {
    "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.

Properties

Name Type Required Restrictions Description
anonymous [V2Session] false none An array of sessions.

V2SessionExtendedStatusPhases

{
  "percent_complete": 0,
  "percent_powering_on": 0,
  "percent_powering_off": 0,
  "percent_configuring": 0
}

Detailed information on the phases of a session.

Properties

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

V2SessionExtendedStatusTiming

{
  "start_time": "string",
  "end_time": "string",
  "duration": "string"
}

Detailed information on the timing of a session.

Properties

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.

V2SessionExtendedStatus

{
  "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.

Properties

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.

Enumerated Values

Property Value
status pending
status running
status complete

V2BootArtifacts

{
  "kernel": "string",
  "kernel_parameters": "string",
  "initrd": "string"
}

A collection of boot artifacts.

Properties

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

V2ComponentActualState

{
  "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

Properties

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.

V2ComponentDesiredState

{
  "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

Properties

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.

V2ComponentStagedState

{
  "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.

Properties

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.

V2ComponentLastAction

{
  "last_updated": "2019-07-28T03:26:00Z",
  "action": "string",
  "failed": true
}

Information on the most recent action taken against the node.

Properties

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

V2ComponentEventStats

{
  "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.

Properties

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.

V2ComponentStatus

{
  "phase": "string",
  "status": "string",
  "status_override": "string"
}

Status information for the component

Properties

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.

V2Component

{
  "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.

Properties

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

V2ComponentArray

[
  {
    "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.

Properties

Name Type Required Restrictions Description
anonymous [V2Component] false none An array of component states.

V2ComponentsFilter

{
  "ids": "string",
  "session": "string"
}

Information for patching multiple components.

Properties

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.

V2ComponentsUpdate

{
  "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.

Properties

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.

V2ApplyStagedComponents

{
  "xnames": [
    "string"
  ]
}

A list of components that should have their staged session applied.

Properties

Name Type Required Restrictions Description
xnames [string] false none The list of component xnames

V2ApplyStagedStatus

{
  "succeeded": [
    "string"
  ],
  "failed": [
    "string"
  ],
  "ignored": [
    "string"
  ]
}

A list of components that should have their staged session applied.

Properties

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

V2Options

{
  "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.

Properties

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.

SessionTemplateArray

[
  {
    "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.

Properties

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