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

Session Template

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

  1. Choose the Session Template to use.

Session Templates which do not belong to a tenant are uniquely identified by their names. All Session Templates that belong to a given tenant are uniquely identified by their names, but may share names with Session Templates that belong to other tenants or that do not belong to a tenant.

a. List available Session Templates.

GET /v2/sessiontemplates

b. Create a new Session Template if desired.

PUT /v2/sessiontemplate/{template_name}

If no Session Template exists that satisfies requirements,
then create a new Session Template.
This Session Template can be used to create a new Session later.
  1. Create the Session.

POST /v2/sessions

Specify template_name and an operation to create a new Session. The template_name corresponds to the Session Template name. A new Session is launched as a result of this call (in the case of /v2/sessions, the option to stage but not begin the Session also exists).

A limit can also be specified to narrow the scope of the Session. The limit can consist of nodes, groups, or roles in a comma-separated list. Multiple groups are treated as separated by OR, unless “&” is added to the start of the component, in which case this becomes an AND. Components can also be preceded by “!” to exclude them.

Note, the response from a successful Session launch contains links. Within links, href is a string that uniquely identifies the Session. href is constructed using the Session Template name and a generated UUID. Use the entire href string as the path parameter session_id to uniquely identify a Session.

  1. Get details on the Session.

GET /v2/sessions/{session_id}

Interactions with Other APIs

Configuration Framework Service (CFS)

If enable_cfs is true in a Session Template, then BOS will invoke CFS to configure the target nodes during boot or reboot operations.

Hardware State Manager (HSM)

In some situations BOS checks HSM to determine if a node has been disabled.

Image Management Service (IMS)

BOS works in concert with IMS to access boot images. All boot images specified via the Session Template must be available via IMS.

Base URLs:

Authentication

  • HTTP Authentication, scheme: bearer

version

root_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
500 Internal Server Error An Internal Server Error occurred handling the request. ProblemDetails

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 List of links to other resources
»» href string false none none
»» rel string false none none
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/sessiontemplates

List Session Templates

List all Session Templates.

Parameters

Name In Type Required Description
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

[
  {
    "name": "cle-1.0.0",
    "tenant": "string",
    "description": "string",
    "enable_cfs": true,
    "cfs": {
      "configuration": "compute-23.4.0"
    },
    "boot_sets": {
      "property1": {
        "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
        "cfs": {
          "configuration": "compute-23.4.0"
        },
        "type": "s3",
        "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "node_list": [
          "x3000c0s19b1n0",
          "x3000c0s19b2n0"
        ],
        "node_roles_groups": [
          "Compute",
          "Application"
        ],
        "node_groups": [
          "string"
        ],
        "arch": "X86",
        "rootfs_provider": "cpss3",
        "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
      },
      "property2": {
        "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
        "cfs": {
          "configuration": "compute-23.4.0"
        },
        "type": "s3",
        "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "node_list": [
          "x3000c0s19b1n0",
          "x3000c0s19b2n0"
        ],
        "node_roles_groups": [
          "Compute",
          "Application"
        ],
        "node_groups": [
          "string"
        ],
        "arch": "X86",
        "rootfs_provider": "cpss3",
        "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
      }
    },
    "links": [
      {
        "href": "string",
        "rel": "string"
      }
    ]
  }
]

Responses

Status Meaning Description Schema
200 OK Session Template details array V2SessionTemplateArray
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplatesvalid/{session_template_id} \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplatesvalid/{session_template_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplatesvalid/{session_template_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/sessiontemplatesvalid/{session_template_id}

Validate the Session Template by ID

Validate Session Template by Session Template ID. The Session Template ID corresponds to the name of the Session Template.

Parameters

Name In Type Required Description
session_template_id path SessionTemplateName true Session Template name
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

"string"

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/sessiontemplates/{session_template_id}

Get Session Template by ID

Get Session Template by Session Template ID. The Session Template ID corresponds to the name of the Session Template.

Parameters

Name In Type Required Description
session_template_id path SessionTemplateName true Session Template name
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "name": "cle-1.0.0",
  "tenant": "string",
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  },
  "links": [
    {
      "href": "string",
      "rel": "string"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK Session Template details V2SessionTemplate
404 Not Found The resource was not found. ProblemDetails
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /v2/sessiontemplates/{session_template_id}

Create Session Template

Create a new Session Template.

Body parameter

{
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "name": "compute",
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "name": "compute",
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  }
}

Parameters

Name In Type Required Description
body body V2SessionTemplate true A JSON object for creating a Session Template
session_template_id path SessionTemplateName true Session Template name
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "name": "cle-1.0.0",
  "tenant": "string",
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  },
  "links": [
    {
      "href": "string",
      "rel": "string"
    }
  ]
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /v2/sessiontemplates/{session_template_id}

Update a Session Template

Update an existing Session Template.

Body parameter

{
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "name": "compute",
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "name": "compute",
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  }
}

Parameters

Name In Type Required Description
body body V2SessionTemplate true A JSON object for updating a Session Template
session_template_id path SessionTemplateName true Session Template name
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "name": "cle-1.0.0",
  "tenant": "string",
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  },
  "links": [
    {
      "href": "string",
      "rel": "string"
    }
  ]
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id} \
  -H 'Accept: application/problem+json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/problem+json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/problem+json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/sessiontemplates/{session_template_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /v2/sessiontemplates/{session_template_id}

Delete a Session Template

Delete a Session Template.

Parameters

Name In Type Required Description
session_template_id path SessionTemplateName true Session Template name
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

404 Response

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

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",
  "tenant": "string",
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  },
  "links": [
    {
      "href": "string",
      "rel": "string"
    }
  ]
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v2/sessions \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api-gw-service-nmn.local/apis/bos/v2/sessions', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v2/sessions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v2/sessions

Create a Session

The creation of a Session performs the operation specified in the SessionCreateRequest on the Boot Sets defined in the Session Template.

Body parameter

{
  "name": "session-20190728032600",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": false,
  "include_disabled": false
}

Parameters

Name In Type Required Description
body body V2SessionCreate true The information to create a Session
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

201 Response

{
  "name": "session-20190728032600",
  "tenant": "string",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": true,
  "components": "string",
  "include_disabled": true,
  "status": {
    "start_time": "string",
    "end_time": "string",
    "status": "pending",
    "error": "string"
  }
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessions', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/sessions

List Sessions

List all Sessions, including those in progress and those complete.

Parameters

Name In Type Required Description
min_age query AgeString false Only include Sessions older than the given age. Age is given in the format “1d” or “6h”
max_age query AgeString false Only include Sessions younger than the given age. Age is given in the format “1d” or “6h”
status query V2SessionStatusLabel false Only include Sessions with the given status.
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Enumerated Values

Parameter Value
status pending
status running
status complete

Example responses

200 Response

[
  {
    "name": "session-20190728032600",
    "tenant": "string",
    "operation": "boot",
    "template_name": "cle-1.0.0",
    "limit": "",
    "stage": true,
    "components": "string",
    "include_disabled": true,
    "status": {
      "start_time": "string",
      "end_time": "string",
      "status": "pending",
      "error": "string"
    }
  }
]

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessions \
  -H 'Accept: application/problem+json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/problem+json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/sessions', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/problem+json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/sessions", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /v2/sessions

Delete multiple Sessions.

Delete multiple Sessions. If filters are provided, only Sessions matching all filters will be deleted. By default only completed Sessions will be deleted.

Parameters

Name In Type Required Description
min_age query AgeString false Only include Sessions older than the given age. Age is given in the format “1d” or “6h”
max_age query AgeString false Only include Sessions younger than the given age. Age is given in the format “1d” or “6h”
status query V2SessionStatusLabel false Only include Sessions with the given status.
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/sessions/{session_id}

Get Session details by ID

Get Session details by Session ID.

Parameters

Name In Type Required Description
session_id path V2SessionName true Session ID
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "name": "session-20190728032600",
  "tenant": "string",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": true,
  "components": "string",
  "include_disabled": true,
  "status": {
    "start_time": "string",
    "end_time": "string",
    "status": "pending",
    "error": "string"
  }
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /v2/sessions/{session_id}

Update status of a single Session

Update the state for a given Session in the BOS database. This is intended only for internal use by the BOS service.

Body parameter

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

Parameters

Name In Type Required Description
body body V2SessionUpdate true The state for a single Session
session_id path V2SessionName true Session ID
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "name": "session-20190728032600",
  "tenant": "string",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": true,
  "components": "string",
  "include_disabled": true,
  "status": {
    "start_time": "string",
    "end_time": "string",
    "status": "pending",
    "error": "string"
  }
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id} \
  -H 'Accept: application/problem+json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/problem+json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/problem+json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /v2/sessions/{session_id}

Delete Session by ID

Delete Session by Session ID.

Parameters

Name In Type Required Description
session_id path V2SessionName true Session ID
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

404 Response

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

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/sessions/{session_id}/status

Get Session extended status information by ID

Get Session extended status information by ID

Parameters

Name In Type Required Description
session_id path V2SessionName true Session ID
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "status": "pending",
  "managed_components_count": 0,
  "phases": {
    "percent_complete": 0,
    "percent_powering_on": 0,
    "percent_powering_off": 0,
    "percent_configuring": 0
  },
  "percent_successful": 0,
  "percent_failed": 0,
  "percent_staged": 0,
  "error_summary": {},
  "timing": {
    "start_time": "string",
    "end_time": "string",
    "duration": "string"
  }
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v2/sessions/{session_id}/status", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v2/sessions/{session_id}/status

Saves the current Session to database

Saves the current Session to database. For use at Session completion.

Parameters

Name In Type Required Description
session_id path V2SessionName true Session ID
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "name": "session-20190728032600",
  "tenant": "string",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": true,
  "components": "string",
  "include_disabled": true,
  "status": {
    "start_time": "string",
    "end_time": "string",
    "status": "pending",
    "error": "string"
  }
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/components \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/components", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/components

Retrieve the state of a collection of Components

Retrieve the full collection of Components in the form of a ComponentArray. Full results can also be filtered by query parameters. Only the first filter parameter of each type is used and the parameters are applied in an AND fashion. If the collection is empty or the filters have no match, an empty array is returned.

Parameters

Name In Type Required Description
ids query V2ComponentId false Retrieve the Components with the given ID
session query V2SessionName false Retrieve the Components with the given Session ID.
staged_session query V2SessionName false Retrieve the Components with the given staged Session ID.
enabled query boolean false Retrieve the Components with the “enabled” state.
phase query V2ComponentPhase false Retrieve the Components in the given phase.
status query string false Retrieve the Components with the given status.
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

ids: Retrieve the Components with the given ID (e.g. xname for hardware Components). Can be chained for selecting groups of Components.

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

[
  {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "last_action": {
      "last_updated": "2019-07-28T03:26:00Z",
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  }
]

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/bos/v2/components \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/bos/v2/components", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /v2/components

Add or Replace a collection of Components

Update the state for a collection of Components in the BOS database

Body parameter

[
  {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600"
    },
    "last_action": {
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  }
]

Parameters

Name In Type Required Description
body body V2ComponentArrayWithIds true The state for an array of Components
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

[
  {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "last_action": {
      "last_updated": "2019-07-28T03:26:00Z",
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  }
]

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/components \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/components', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/components", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /v2/components

Update a collection of Components

Update the state for a collection of Components in the BOS database

Body parameter

{
  "patch": {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600"
    },
    "last_action": {
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  },
  "filters": {
    "ids": "string",
    "session": ""
  }
}

Parameters

Name In Type Required Description
body body any true The state for an array of Components
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

[
  {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "last_action": {
      "last_updated": "2019-07-28T03:26:00Z",
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  }
]

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /v2/components/{component_id}

Retrieve the state of a single Component

Retrieve the current and desired state of a single Component

Parameters

Name In Type Required Description
component_id path V2ComponentId true Component ID. e.g. xname for hardware Components
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "last_action": {
    "last_updated": "2019-07-28T03:26:00Z",
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /v2/components/{component_id}

Add or Replace a single Component

Update the state for a given Component in the BOS database

Body parameter

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600"
  },
  "last_action": {
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

Parameters

Name In Type Required Description
body body V2Component true The state for a single Component
component_id path V2ComponentId true Component ID. e.g. xname for hardware Components
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "last_action": {
    "last_updated": "2019-07-28T03:26:00Z",
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X PATCH https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.patch('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PATCH", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PATCH /v2/components/{component_id}

Update a single Component

Update the state for a given Component in the BOS database

Body parameter

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600"
  },
  "last_action": {
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

Parameters

Name In Type Required Description
body body V2Component true The state for a single Component
component_id path V2ComponentId true Component ID. e.g. xname for hardware Components
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "last_action": {
    "last_updated": "2019-07-28T03:26:00Z",
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id} \
  -H 'Accept: application/problem+json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/problem+json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/problem+json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/bos/v2/components/{component_id}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /v2/components/{component_id}

Delete a single Component

Delete the given Component

Parameters

Name In Type Required Description
component_id path V2ComponentId true Component ID. e.g. xname for hardware Components
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

404 Response

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

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
Cray-Tenant-Name: vcluster-my-tenant1
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/bos/v2/applystaged \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Cray-Tenant-Name: vcluster-my-tenant1' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Cray-Tenant-Name': 'vcluster-my-tenant1',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api-gw-service-nmn.local/apis/bos/v2/applystaged', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Cray-Tenant-Name": []string{"vcluster-my-tenant1"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/bos/v2/applystaged", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v2/applystaged

Start a staged Session for the specified Components

Given a list of xnames, this will trigger the start of any Sessions staged for those Components. Components without a staged Session will be ignored, and a list all Components that are acted on will be returned in the response.

Body parameter

{
  "xnames": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body V2ApplyStagedComponents true A list of xnames that should have their staged Session applied.
Cray-Tenant-Name header TenantName false Tenant name.

Detailed descriptions

Cray-Tenant-Name: Tenant name.

Requests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.

Requests with an empty tenant name, or that omit this parameter, will have no such context restrictions.

Example responses

200 Response

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

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

{
  "cfs_read_timeout": 20,
  "cleanup_completed_session_ttl": "3d",
  "clear_stage": true,
  "component_actual_state_ttl": "6h",
  "default_retry_policy": 1,
  "disable_components_on_completion": true,
  "discovery_frequency": 33554432,
  "ims_errors_fatal": true,
  "ims_images_must_exist": true,
  "logging_level": "string",
  "max_boot_wait_time": 1048576,
  "max_component_batch_size": 1000,
  "max_power_off_wait_time": 1048576,
  "max_power_on_wait_time": 1048576,
  "polling_frequency": 1048576,
  "reject_nids": true,
  "session_limit_required": true
}

Parameters

Name In Type Required Description
body body V2Options true Service-wide options

Example responses

200 Response

{
  "cfs_read_timeout": 20,
  "cleanup_completed_session_ttl": "3d",
  "clear_stage": true,
  "component_actual_state_ttl": "6h",
  "default_retry_policy": 1,
  "disable_components_on_completion": true,
  "discovery_frequency": 33554432,
  "ims_errors_fatal": true,
  "ims_images_must_exist": true,
  "logging_level": "string",
  "max_boot_wait_time": 1048576,
  "max_component_batch_size": 1000,
  "max_power_off_wait_time": 1048576,
  "max_power_on_wait_time": 1048576,
  "polling_frequency": 1048576,
  "reject_nids": true,
  "session_limit_required": true
}

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

{
  "cfs_read_timeout": 20,
  "cleanup_completed_session_ttl": "3d",
  "clear_stage": true,
  "component_actual_state_ttl": "6h",
  "default_retry_policy": 1,
  "disable_components_on_completion": true,
  "discovery_frequency": 33554432,
  "ims_errors_fatal": true,
  "ims_images_must_exist": true,
  "logging_level": "string",
  "max_boot_wait_time": 1048576,
  "max_component_batch_size": 1000,
  "max_power_off_wait_time": 1048576,
  "max_power_on_wait_time": 1048576,
  "polling_frequency": 1048576,
  "reject_nids": true,
  "session_limit_required": true
}

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

AgeString

"3d"

Age in minutes (e.g. “3m”), hours (e.g. “5h”), days (e.g. “10d”), or weeks (e.g. “2w”).

Properties

Name Type Required Restrictions Description
anonymous string false none Age in minutes (e.g. “3m”), hours (e.g. “5h”), days (e.g. “10d”), or weeks (e.g. “2w”).

BootInitrdPath

"s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"

A path to the initrd to use for booting.

Properties

Name Type Required Restrictions Description
anonymous string false none A path to the initrd to use for booting.

BootKernelPath

"s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel"

A path to the kernel to use for booting.

Properties

Name Type Required Restrictions Description
anonymous string false none A path to the kernel to use for booting.

BootManifestPath

"s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json"

A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc, depending on the type of the Boot Set.

Properties

Name Type Required Restrictions Description
anonymous string false none A path identifying the metadata describing the components of the boot image.
This could be a URI, URL, etc, depending on the type of the Boot Set.

BootKernelParameters

"console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}"

The kernel parameters to use to boot the nodes.

Properties

Name Type Required Restrictions Description
anonymous string false none The kernel parameters to use to boot the nodes.

BootSetEtag

"1cc4eef4f407bd8a62d7d66ee4b9e9c8"

This is the ’entity tag’. It helps verify the version of metadata describing the components of the boot image we are working with.

Properties

Name Type Required Restrictions Description
anonymous string false none This is the ’entity tag’. It helps verify the version of metadata describing the components of the boot image we are working with.

BootSetName

"compute"

The Boot Set name.

  • Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).
  • Boot Set names must begin and end with a letter or digit.

Properties

Name Type Required Restrictions Description
anonymous string false write-only The Boot Set name.

* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).
* Boot Set names must begin and end with a letter or digit.

BootSetRootfsProvider

"cpss3"

The root file system provider.

Properties

Name Type Required Restrictions Description
anonymous string false none The root file system provider.

BootSetRootfsProviderPassthrough

"dvs:api-gw-service-nmn.local:300:nmn0"

The root file system provider passthrough. These are additional kernel parameters that will be appended to the ‘rootfs=’ kernel parameter

Properties

Name Type Required Restrictions Description
anonymous string false none The root file system provider passthrough.
These are additional kernel parameters that will be appended to
the ‘rootfs=’ kernel parameter

BootSetType

"s3"

The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.

Properties

Name Type Required Restrictions Description
anonymous string false none The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.

CfsConfiguration

"compute-23.4.0"

The name of configuration to be applied.

Properties

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

EmptyString

""

An empty string value.

Properties

Name Type Required Restrictions Description
anonymous string false none An empty string value.

Enumerated Values

Property Value
anonymous

EmptyStringNullable

""

An empty string value.

Properties

Name Type Required Restrictions Description
anonymous string¦null false none An empty string value.

Enumerated Values

Property Value
anonymous

EnableCfs

true

Whether to enable the Configuration Framework Service (CFS).

Properties

Name Type Required Restrictions Description
anonymous boolean false none Whether to enable the Configuration Framework Service (CFS).

HardwareComponentName

"x3001c0s39b0n0"

Hardware component name (xname).

Properties

Name Type Required Restrictions Description
anonymous string false none Hardware component name (xname).

Healthz

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

Service health status

Properties

Name Type Required Restrictions Description
dbStatus string false none none
apiStatus string false none none
{
  "href": "string",
  "rel": "string"
}

Link to other resources

Properties

Name Type Required Restrictions Description
href string false none none
rel string false none none
[
  {
    "href": "string",
    "rel": "string"
  }
]

List of links to other resources

Properties

Name Type Required Restrictions Description
anonymous [Link] false none List of links to other resources

LinkListReadOnly

[
  {
    "href": "string",
    "rel": "string"
  }
]

List of links to other resources

Properties

Name Type Required Restrictions Description
anonymous [Link] false read-only List of links to other resources

NodeList

[
  "x3000c0s19b1n0",
  "x3000c0s19b2n0"
]

A node list that is required to have at least one node. Nodes must be specified by component name (xname). NIDs are not supported. If the reject_nids option is enabled, then Session Template creation or validation will fail if any of the boot sets contain a NodeList that appears to contain a NID.

Properties

Name Type Required Restrictions Description
anonymous [HardwareComponentName] false none A node list that is required to have at least one node.
Nodes must be specified by component name (xname). NIDs are not supported.
If the reject_nids option is enabled, then Session Template creation or validation will fail if
any of the boot sets contain a NodeList that appears to contain a NID.

NodeGroupList

[
  "string"
]

Node group list. Allows actions against associated nodes by logical groupings.

Properties

None

NodeRoleList

[
  "Compute",
  "Application"
]

Node role list. Allows actions against nodes with associated roles.

Properties

None

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.

SessionLimit

""

A comma-separated list of nodes, groups, or roles to which the Session will be limited. Components are treated as OR operations unless preceded by “&” for AND or “!” for NOT.

Alternatively, the limit can be set to “*”, which means no limit.

An empty string or null value is the same as specifying no limit.

If the reject_nids option is enabled, then Session creation will fail if its limit appears to contain a NID value.

Properties

Name Type Required Restrictions Description
anonymous string¦null false none A comma-separated list of nodes, groups, or roles to which the Session
will be limited. Components are treated as OR operations unless
preceded by “&” for AND or “!” for NOT.

Alternatively, the limit can be set to “*”, which means no limit.

An empty string or null value is the same as specifying no limit.

If the reject_nids option is enabled, then Session creation will fail if its
limit appears to contain a NID value.

SessionTemplateDescription

"string"

An optional description for the Session Template.

Properties

Name Type Required Restrictions Description
anonymous string false none An optional description for the Session Template.

SessionTemplateName

"cle-1.0.0"

Name of the Session Template.

The name must:

  • Use only letters, digits, periods (.), dashes (-), and underscores (_).
  • Begin and end with a letter or digit.

Properties

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

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.

TenantName

"vcluster-my-tenant1"

Name of a tenant. Used for multi-tenancy. An empty string means no tenant.

Properties

Name Type Required Restrictions Description
anonymous string false none Name of a tenant. Used for multi-tenancy. An empty string means no tenant.

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 LinkList false none List of links to other resources

V2TenantName

"string"

Name of the tenant that owns this resource. Only used in environments with multi-tenancy enabled. An empty string or null value means the resource is not owned by a tenant. The absence of this field from a resource indicates the same.

Properties

Name Type Required Restrictions Description
anonymous string¦null false read-only Name of the tenant that owns this resource. Only used in environments
with multi-tenancy enabled. An empty string or null value means the resource
is not owned by a tenant. The absence of this field from a resource indicates
the same.

V2CfsParameters

{
  "configuration": "compute-23.4.0"
}

This is the collection of parameters that are passed to the Configuration Framework Service when configuration is enabled. Can be set as the global value for a Session Template, or individually within a Boot Set.

Properties

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

V2SessionTemplate

{
  "name": "cle-1.0.0",
  "tenant": "string",
  "description": "string",
  "enable_cfs": true,
  "cfs": {
    "configuration": "compute-23.4.0"
  },
  "boot_sets": {
    "property1": {
      "name": "compute",
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    },
    "property2": {
      "name": "compute",
      "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
      "cfs": {
        "configuration": "compute-23.4.0"
      },
      "type": "s3",
      "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "node_list": [
        "x3000c0s19b1n0",
        "x3000c0s19b2n0"
      ],
      "node_roles_groups": [
        "Compute",
        "Application"
      ],
      "node_groups": [
        "string"
      ],
      "arch": "X86",
      "rootfs_provider": "cpss3",
      "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
    }
  },
  "links": [
    {
      "href": "string",
      "rel": "string"
    }
  ]
}

A Session Template object represents a collection of resources and metadata. A Session Template is used to create a Session which applies the data to group of Components.

  • self : The Session Template object

Properties

Name Type Required Restrictions Description
name string false read-only Name of the Session Template.

Names must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.
tenant V2TenantName false none Name of the tenant that owns this resource. Only used in environments
with multi-tenancy enabled. An empty string or null value means the resource
is not owned by a tenant. The absence of this field from a resource indicates
the same.
description SessionTemplateDescription false none An optional description for the Session Template.
enable_cfs EnableCfs false none Whether to enable the Configuration Framework Service (CFS).
cfs V2CfsParameters false none This is the collection of parameters that are passed to the Configuration
Framework Service when configuration is enabled. Can be set as the global value for
a Session Template, or individually within a Boot Set.
boot_sets object true none Mapping from Boot Set names to Boot Sets.

* Boot Set names must be 1-127 characters in length.
* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).
* Boot Set names must begin and end with a letter or digit.
» additionalProperties V2BootSet false none A Boot Set is a collection of nodes defined by an explicit list, their functional
role, and their logical groupings. This collection of nodes is associated with one
set of boot artifacts and optional additional records for configuration and root
filesystem provisioning.

A boot set requires at least one of the following fields to be specified:
node_list, node_roles_groups, node_groups

If specified, the name field must match the key mapping to this boot set in the
boot_sets field of the containing V2SessionTemplate.
links LinkListReadOnly false none List of links to other resources

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.

V2SessionName

"session-20190728032600"

Name of the Session.

The name must:

  • Use only letters, digits, periods (.), dashes (-), and underscores (_).
  • Begin and end with a letter or digit.

Properties

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

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.

V2SessionNameOrEmpty

"session-20190728032600"

Properties

oneOf

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

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.

xor

Name Type Required Restrictions Description
anonymous EmptyString false none An empty string value.

V2SessionOperation

"boot"

A Session represents a desired state that is being applied to a group of Components. Sessions run until all Components it manages have either been disabled due to completion, or until all Components are managed by other newer Sessions.

Operation – An operation to perform on Components in this Session. Boot Applies the Template to the Components and boots/reboots if necessary. Reboot Applies the Template to the Components; guarantees a reboot. Shutdown Power down Components that are on.

Properties

Name Type Required Restrictions Description
anonymous string false none A Session represents a desired state that is being applied to a group
of Components. Sessions run until all Components it manages have
either been disabled due to completion, or until all Components are
managed by other newer Sessions.

Operation – An operation to perform on Components in this Session.
Boot Applies the Template to the Components and boots/reboots if necessary.
Reboot Applies the Template to the Components; guarantees a reboot.
Shutdown Power down Components that are on.

Enumerated Values

Property Value
anonymous boot
anonymous reboot
anonymous shutdown

V2SessionCreate

{
  "name": "session-20190728032600",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": false,
  "include_disabled": false
}

A Session Creation object. A UUID name is generated if a name is not provided. The limit parameter is required if the session_limit_required option is true.

Properties

Name Type Required Restrictions Description
name V2SessionName false none Name of the Session.

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.
operation V2SessionOperation true none A Session represents a desired state that is being applied to a group
of Components. Sessions run until all Components it manages have
either been disabled due to completion, or until all Components are
managed by other newer Sessions.

Operation – An operation to perform on Components in this Session.
Boot Applies the Template to the Components and boots/reboots if necessary.
Reboot Applies the Template to the Components; guarantees a reboot.
Shutdown Power down Components that are on.
template_name SessionTemplateName true none Name of the Session Template.

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.
limit SessionLimit false none A comma-separated list of nodes, groups, or roles to which the Session
will be limited. Components are treated as OR operations unless
preceded by “&” for AND or “!” for NOT.

Alternatively, the limit can be set to “*”, which means no limit.

An empty string or null value is the same as specifying no limit.

If the reject_nids option is enabled, then Session creation will fail if its
limit appears to contain a NID value.
stage boolean false none Set to stage a Session which will not immediately change the state of any Components.
The “applystaged” endpoint can be called at a later time to trigger the start of this Session.
include_disabled boolean false none Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).

V2SessionStatusLabel

"pending"

The status of a Session.

Properties

Name Type Required Restrictions Description
anonymous string false none The status of a Session.

Enumerated Values

Property Value
anonymous pending
anonymous running
anonymous complete

V2SessionStartTime

"string"

When the Session was created.

Properties

Name Type Required Restrictions Description
anonymous string false none When the Session was created.

V2SessionEndTime

"string"

When the Session was completed. A null value means the Session has not ended.

Properties

Name Type Required Restrictions Description
anonymous string¦null false none When the Session was completed. A null value means the Session has not ended.

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 V2SessionStartTime false none When the Session was created.
end_time V2SessionEndTime false none When the Session was completed. A null value means the Session has not ended.
status V2SessionStatusLabel false none The status of a Session.
error string¦null false none Error which prevented the Session from running.
A null value means the Session has not encountered an error.

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_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
  "node_list": [
    "x3000c0s19b1n0",
    "x3000c0s19b2n0"
  ],
  "node_roles_groups": [
    "Compute",
    "Application"
  ],
  "node_groups": [
    "string"
  ],
  "arch": "X86",
  "rootfs_provider": "cpss3",
  "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
}

A Boot Set is a collection of nodes defined by an explicit list, their functional role, and their logical groupings. This collection of nodes is associated with one set of boot artifacts and optional additional records for configuration and root filesystem provisioning.

A boot set requires at least one of the following fields to be specified: node_list, node_roles_groups, node_groups

If specified, the name field must match the key mapping to this boot set in the boot_sets field of the containing V2SessionTemplate.

Properties

Name Type Required Restrictions Description
name BootSetName false none The Boot Set name.

* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).
* Boot Set names must begin and end with a letter or digit.
path BootManifestPath true none A path identifying the metadata describing the components of the boot image.
This could be a URI, URL, etc, depending on the type of the Boot Set.
cfs V2CfsParameters false none This is the collection of parameters that are passed to the Configuration
Framework Service when configuration is enabled. Can be set as the global value for
a Session Template, or individually within a Boot Set.
type BootSetType true none The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.
etag BootSetEtag false none This is the ’entity tag’. It helps verify the version of metadata describing the components of the boot image we are working with.
kernel_parameters BootKernelParameters false none The kernel parameters to use to boot the nodes.
node_list NodeList false none A node list that is required to have at least one node.
Nodes must be specified by component name (xname). NIDs are not supported.
If the reject_nids option is enabled, then Session Template creation or validation will fail if
any of the boot sets contain a NodeList that appears to contain a NID.
node_roles_groups NodeRoleList false none Node role list. Allows actions against nodes with associated roles.
node_groups NodeGroupList false none Node group list. Allows actions against associated nodes by logical groupings.
arch string false none The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component ‘Arch’ field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.
rootfs_provider BootSetRootfsProvider false none The root file system provider.
rootfs_provider_passthrough BootSetRootfsProviderPassthrough false none The root file system provider passthrough.
These are additional kernel parameters that will be appended to
the ‘rootfs=’ kernel parameter

Enumerated Values

Property Value
arch X86
arch ARM
arch Other
arch Unknown

V2SessionTemplateArray

[
  {
    "name": "cle-1.0.0",
    "tenant": "string",
    "description": "string",
    "enable_cfs": true,
    "cfs": {
      "configuration": "compute-23.4.0"
    },
    "boot_sets": {
      "property1": {
        "name": "compute",
        "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
        "cfs": {
          "configuration": "compute-23.4.0"
        },
        "type": "s3",
        "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "node_list": [
          "x3000c0s19b1n0",
          "x3000c0s19b2n0"
        ],
        "node_roles_groups": [
          "Compute",
          "Application"
        ],
        "node_groups": [
          "string"
        ],
        "arch": "X86",
        "rootfs_provider": "cpss3",
        "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
      },
      "property2": {
        "name": "compute",
        "path": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json",
        "cfs": {
          "configuration": "compute-23.4.0"
        },
        "type": "s3",
        "etag": "1cc4eef4f407bd8a62d7d66ee4b9e9c8",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "node_list": [
          "x3000c0s19b1n0",
          "x3000c0s19b2n0"
        ],
        "node_roles_groups": [
          "Compute",
          "Application"
        ],
        "node_groups": [
          "string"
        ],
        "arch": "X86",
        "rootfs_provider": "cpss3",
        "rootfs_provider_passthrough": "dvs:api-gw-service-nmn.local:300:nmn0"
      }
    },
    "links": [
      {
        "href": "string",
        "rel": "string"
      }
    ]
  }
]

An array of Session Templates.

Properties

Name Type Required Restrictions Description
anonymous [V2SessionTemplate] false none An array of Session Templates.

V2Session

{
  "name": "session-20190728032600",
  "tenant": "string",
  "operation": "boot",
  "template_name": "cle-1.0.0",
  "limit": "",
  "stage": true,
  "components": "string",
  "include_disabled": true,
  "status": {
    "start_time": "string",
    "end_time": "string",
    "status": "pending",
    "error": "string"
  }
}

A Session object

  • self : The Session object

Properties

Name Type Required Restrictions Description
name V2SessionName true none Name of the Session.

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.
tenant V2TenantName false none Name of the tenant that owns this resource. Only used in environments
with multi-tenancy enabled. An empty string or null value means the resource
is not owned by a tenant. The absence of this field from a resource indicates
the same.
operation V2SessionOperation true none A Session represents a desired state that is being applied to a group
of Components. Sessions run until all Components it manages have
either been disabled due to completion, or until all Components are
managed by other newer Sessions.

Operation – An operation to perform on Components in this Session.
Boot Applies the Template to the Components and boots/reboots if necessary.
Reboot Applies the Template to the Components; guarantees a reboot.
Shutdown Power down Components that are on.
template_name SessionTemplateName true none Name of the Session Template.

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.
limit SessionLimit false none A comma-separated list of nodes, groups, or roles to which the Session
will be limited. Components are treated as OR operations unless
preceded by “&” for AND or “!” for NOT.

Alternatively, the limit can be set to “*”, which means no limit.

An empty string or null value is the same as specifying no limit.

If the reject_nids option is enabled, then Session creation will fail if its
limit appears to contain a NID value.
stage boolean false none Set to stage a Session which will not immediately change the state of any Components.
The “applystaged” endpoint can be called at a later time to trigger the start of this Session.
components string false none A comma-separated list of nodes, representing the initial list of nodes
the Session should operate against. The list will remain even if
other Sessions have taken over management of the nodes.
include_disabled boolean false none Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).
status V2SessionStatus false none Information on the status of a Session.

V2SessionUpdate

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

A Session update object

  • self : The Session object

Properties

Name Type Required Restrictions Description
components string false none A comma-separated list of nodes, representing the initial list of nodes
the Session should operate against. The list will remain even if
other Sessions have taken over management of the nodes.
status V2SessionStatus false none Information on the status of a Session.

V2SessionArray

[
  {
    "name": "session-20190728032600",
    "tenant": "string",
    "operation": "boot",
    "template_name": "cle-1.0.0",
    "limit": "",
    "stage": true,
    "components": "string",
    "include_disabled": true,
    "status": {
      "start_time": "string",
      "end_time": "string",
      "status": "pending",
      "error": "string"
    }
  }
]

An array of Sessions.

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 V2SessionStartTime false none When the Session was created.
end_time V2SessionEndTime false none When the Session was completed. A null value means the Session has not ended.
duration string false none The current duration of the ongoing Session or final duration of the completed Session.

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 V2SessionStatusLabel false none The status of a Session.
managed_components_count integer false none The count of Components currently managed by this Session
phases V2SessionExtendedStatusPhases false none Detailed information on the phases of a Session.
percent_successful number false none The percent of Components currently in a successful state
percent_failed number false none The percent of Components currently in a failed state
percent_staged number false none The percent of Components currently still staged for this Session
error_summary object false none A summary of the errors currently listed by all Components
timing V2SessionExtendedStatusTiming false none Detailed information on the timing of a Session.

V2BootArtifacts

{
  "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
  "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
  "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
}

A collection of boot artifacts.

Properties

Name Type Required Restrictions Description
kernel BootKernelPath false none A path to the kernel to use for booting.
kernel_parameters BootKernelParameters false none The kernel parameters to use to boot the nodes.
initrd BootInitrdPath false none A path to the initrd to use for booting.

V2ComponentBssToken

"string"

A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.

Properties

Name Type Required Restrictions Description
anonymous string false none A token received from the node identifying the boot artifacts.
For BOS use-only, users should not set this field. It will be overwritten.

V2ComponentId

"string"

The Component’s ID. (e.g. xname for hardware Components)

Properties

Name Type Required Restrictions Description
anonymous string false none The Component’s ID. (e.g. xname for hardware Components)

V2ComponentIdList

[
  "string"
]

A list of Component IDs (xnames)

Properties

Name Type Required Restrictions Description
anonymous [V2ComponentId] false none A list of Component IDs (xnames)

V2ComponentLastUpdated

"2019-07-28T03:26:00Z"

The date/time when the state was last updated in RFC 3339 format.

Properties

Name Type Required Restrictions Description
anonymous string(date-time) false read-only The date/time when the state was last updated in RFC 3339 format.

V2ComponentActualState

{
  "boot_artifacts": {
    "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
    "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
    "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
  },
  "bss_token": "string",
  "last_updated": "2019-07-28T03:26:00Z"
}

The actual boot artifacts and configuration for a Component

Properties

Name Type Required Restrictions Description
boot_artifacts V2BootArtifacts false none A collection of boot artifacts.
bss_token V2ComponentBssToken false none A token received from the node identifying the boot artifacts.
For BOS use-only, users should not set this field. It will be overwritten.
last_updated V2ComponentLastUpdated false none The date/time when the state was last updated in RFC 3339 format.

V2ComponentDesiredState

{
  "boot_artifacts": {
    "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
    "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
    "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
  },
  "configuration": "compute-23.4.0",
  "bss_token": "string",
  "last_updated": "2019-07-28T03:26:00Z"
}

The desired boot artifacts and configuration for a Component

Properties

Name Type Required Restrictions Description
boot_artifacts V2BootArtifacts false none A collection of boot artifacts.
configuration CfsConfiguration false none The name of configuration to be applied.
bss_token V2ComponentBssToken false none A token received from the node identifying the boot artifacts.
For BOS use-only, users should not set this field. It will be overwritten.
last_updated V2ComponentLastUpdated false none The date/time when the state was last updated in RFC 3339 format.

V2ComponentStagedState

{
  "boot_artifacts": {
    "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
    "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
    "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
  },
  "configuration": "compute-23.4.0",
  "session": "session-20190728032600",
  "last_updated": "2019-07-28T03:26:00Z"
}

The staged boot artifacts and configuration for a Component. Optionally, a Session may be set which can be triggered at a later time against this Component.

Properties

Name Type Required Restrictions Description
boot_artifacts V2BootArtifacts false none A collection of boot artifacts.
configuration CfsConfiguration false none The name of configuration to be applied.
session V2SessionNameOrEmpty false none none
last_updated V2ComponentLastUpdated false none The date/time when the state was last updated in RFC 3339 format.

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 V2ComponentLastUpdated false none The date/time when the state was last updated in RFC 3339 format.
action string false none A description of the most recent operator/action to impact the Component.
failed boolean false none Denotes if the last action failed to accomplish its task

V2ComponentEventStats

{
  "power_on_attempts": 1048576,
  "power_off_graceful_attempts": 1048576,
  "power_off_forceful_attempts": 1048576
}

Information on the most recent attempt to return the node to its desired state.

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.

V2ComponentPhase

"string"

The current phase of the Component in the boot process.

Properties

Name Type Required Restrictions Description
anonymous string false none The current phase of the Component in the boot process.

V2ComponentStatus

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

Status information for the Component

Properties

Name Type Required Restrictions Description
phase V2ComponentPhase false none The current phase of the Component in the boot process.
status string false read-only The current status of the Component. More detailed than phase.
status_override string false none If set, this will override the status value.

V2Component

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "last_action": {
    "last_updated": "2019-07-28T03:26:00Z",
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

The current and desired artifacts state for a Component, and the Session responsible for the Component’s current state.

Properties

Name Type Required Restrictions Description
id V2ComponentId false none The Component’s ID. (e.g. xname for hardware Components)
actual_state V2ComponentActualState false none The actual boot artifacts and configuration for a Component
desired_state V2ComponentDesiredState false none The desired boot artifacts and configuration for a Component
staged_state V2ComponentStagedState false none The staged boot artifacts and configuration for a Component. Optionally, a Session
may be set which can be triggered at a later time against this Component.
last_action V2ComponentLastAction false none Information on the most recent action taken against the node.
event_stats V2ComponentEventStats false none Information on the most recent attempt to return the node to its desired state.
status V2ComponentStatus false none Status information for the Component
enabled boolean false none A flag indicating if actions should be taken for this Component.
error string false none A description of the most recent error to impact the Component.
session V2SessionNameOrEmpty false none none
retry_policy integer false none The maximum number attempts per action when actions fail.
Defaults to the global default_retry_policy if not set

V2ComponentWithId

{
  "id": "string",
  "actual_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "desired_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "bss_token": "string",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "staged_state": {
    "boot_artifacts": {
      "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
      "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
      "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
    },
    "configuration": "compute-23.4.0",
    "session": "session-20190728032600",
    "last_updated": "2019-07-28T03:26:00Z"
  },
  "last_action": {
    "last_updated": "2019-07-28T03:26:00Z",
    "action": "string",
    "failed": true
  },
  "event_stats": {
    "power_on_attempts": 1048576,
    "power_off_graceful_attempts": 1048576,
    "power_off_forceful_attempts": 1048576
  },
  "status": {
    "phase": "string",
    "status": "string",
    "status_override": "string"
  },
  "enabled": true,
  "error": "string",
  "session": "session-20190728032600",
  "retry_policy": 1
}

The current and desired artifacts state for a Component, and the Session responsible for the Component’s current state.

Properties

Name Type Required Restrictions Description
id V2ComponentId true none The Component’s ID. (e.g. xname for hardware Components)
actual_state V2ComponentActualState false none The actual boot artifacts and configuration for a Component
desired_state V2ComponentDesiredState false none The desired boot artifacts and configuration for a Component
staged_state V2ComponentStagedState false none The staged boot artifacts and configuration for a Component. Optionally, a Session
may be set which can be triggered at a later time against this Component.
last_action V2ComponentLastAction false none Information on the most recent action taken against the node.
event_stats V2ComponentEventStats false none Information on the most recent attempt to return the node to its desired state.
status V2ComponentStatus false none Status information for the Component
enabled boolean false none A flag indicating if actions should be taken for this Component.
error string false none A description of the most recent error to impact the Component.
session V2SessionNameOrEmpty false none none
retry_policy integer false none The maximum number attempts per action when actions fail.
Defaults to the global default_retry_policy if not set

V2ComponentArray

[
  {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "last_action": {
      "last_updated": "2019-07-28T03:26:00Z",
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  }
]

An array of Component states.

Properties

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

V2ComponentArrayWithIds

[
  {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "last_action": {
      "last_updated": "2019-07-28T03:26:00Z",
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  }
]

An array of Component states with associated Ids.

Properties

Name Type Required Restrictions Description
anonymous [V2ComponentWithId] false none An array of Component states with associated Ids.

V2ComponentsFilterByIds

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

Information for patching multiple Components by listing their IDs.

Properties

Name Type Required Restrictions Description
ids string true none A comma-separated list of Component IDs.
session EmptyStringNullable false none An empty string value.

V2ComponentsFilterBySession

{
  "ids": "",
  "session": "session-20190728032600"
}

Information for patching multiple Components by Session name. All Components part of this Session will be patched.

Properties

Name Type Required Restrictions Description
ids EmptyStringNullable false none An empty string value.
session V2SessionName true none Name of the Session.

The name must:
* Use only letters, digits, periods (.), dashes (-), and underscores (_).
* Begin and end with a letter or digit.

V2ComponentsUpdate

{
  "patch": {
    "id": "string",
    "actual_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "desired_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "bss_token": "string",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "staged_state": {
      "boot_artifacts": {
        "kernel": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel",
        "kernel_parameters": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}",
        "initrd": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd"
      },
      "configuration": "compute-23.4.0",
      "session": "session-20190728032600",
      "last_updated": "2019-07-28T03:26:00Z"
    },
    "last_action": {
      "last_updated": "2019-07-28T03:26:00Z",
      "action": "string",
      "failed": true
    },
    "event_stats": {
      "power_on_attempts": 1048576,
      "power_off_graceful_attempts": 1048576,
      "power_off_forceful_attempts": 1048576
    },
    "status": {
      "phase": "string",
      "status": "string",
      "status_override": "string"
    },
    "enabled": true,
    "error": "string",
    "session": "session-20190728032600",
    "retry_policy": 1
  },
  "filters": {
    "ids": "string",
    "session": ""
  }
}

Information for patching multiple Components.

Properties

Name Type Required Restrictions Description
patch V2Component true none The current and desired artifacts state for a Component, and
the Session responsible for the Component’s current state.
filters any true none none

oneOf

Name Type Required Restrictions Description
» anonymous V2ComponentsFilterByIds false none Information for patching multiple Components by listing their IDs.

xor

Name Type Required Restrictions Description
» anonymous V2ComponentsFilterBySession false none Information for patching multiple Components by Session name.
All Components part of this Session will be patched.

V2ApplyStagedComponents

{
  "xnames": [
    "string"
  ]
}

A list of Components that should have their staged Session applied.

Properties

Name Type Required Restrictions Description
xnames V2ComponentIdList false none A list of Component IDs (xnames)

V2ApplyStagedStatus

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

Mapping from Component staged Session statuses to Components with that status.

Properties

Name Type Required Restrictions Description
succeeded V2ComponentIdList false none A list of Component IDs (xnames)
failed V2ComponentIdList false none A list of Component IDs (xnames)
ignored V2ComponentIdList false none A list of Component IDs (xnames)

V2Options

{
  "cfs_read_timeout": 20,
  "cleanup_completed_session_ttl": "3d",
  "clear_stage": true,
  "component_actual_state_ttl": "6h",
  "default_retry_policy": 1,
  "disable_components_on_completion": true,
  "discovery_frequency": 33554432,
  "ims_errors_fatal": true,
  "ims_images_must_exist": true,
  "logging_level": "string",
  "max_boot_wait_time": 1048576,
  "max_component_batch_size": 1000,
  "max_power_off_wait_time": 1048576,
  "max_power_on_wait_time": 1048576,
  "polling_frequency": 1048576,
  "reject_nids": true,
  "session_limit_required": true
}

Options for the Boot Orchestration Service.

Properties

Name Type Required Restrictions Description
cfs_read_timeout integer false none The amount of time (in seconds) to wait for a response before timing out a request to CFS
cleanup_completed_session_ttl string false none Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).
0 disables cleanup behavior.
clear_stage boolean false none Allows a Component’s staged information to be cleared when the requested staging action has been started. Defaults to false.
component_actual_state_ttl string false none The maximum amount of time a Component’s actual state is considered valid (in minutes, hours, days, or weeks).
0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.
default_retry_policy integer false none The default maximum number attempts per node for failed actions.
disable_components_on_completion boolean false none If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.
If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.
discovery_frequency integer false none How frequently the BOS discovery agent syncs new Components from HSM (in seconds)
ims_errors_fatal boolean false none This option modifies how BOS behaves when validating the architecture of a boot image in a boot set.
Specifically, this option comes into play when BOS needs data from IMS in order to do this validation, but
IMS is unreachable.
In the above situation, if this option is true, then the validation will fail.
Otherwise, if the option is false, then a warning will be logged, but the validation will not
be failed because of this.
ims_images_must_exist boolean false none This option modifies how BOS behaves when validating a boot set whose boot image appears to be from IMS.
Specifically, this option comes into play when the image does not actually exist in IMS.
In the above situation, if this option is true, then the validation will fail.
Otherwise, if the option is false, then a warning will be logged, but the validation will not
be failed because of this. Note that if ims_images_must_exist is true but ims_errors_fatal is false, then
a failure to determine whether or not an image is in IMS will NOT result in a fatal error.
logging_level string false none The logging level for all BOS services
max_boot_wait_time integer false none How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)
max_component_batch_size integer false none The maximum number of Components that a BOS operator will process at once. 0 means no limit.
max_power_off_wait_time integer false none How long BOS will wait for a node to power off before forcefully powering off (in seconds)
max_power_on_wait_time integer false none How long BOS will wait for a node to power on before calling power on again (in seconds)
polling_frequency integer false none How frequently the BOS operators check Component state for needed actions (in seconds)
reject_nids boolean false none If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).
Specifically, if this option is true, then:
- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.
- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.
- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.

This option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).
session_limit_required boolean false none If true, Sessions cannot be created without specifying the limit parameter.