BOS API

Overview

The BOS API is the point of contact for the user and all other services that want to query or update BOS data. This includes the sub-services of BOS.

Server

The BOS API server does not do any of the actual core BOS work – that is, it does not boot or reboot any nodes, it does not coordinate the progress of sessions, and so on. Its essential purpose is to act as a front-end for the BOS databases, allowing callers to safely create, read, modify, and delete entries in the databases.

All of the core BOS v2 work is done by the BOS operators and the BOS reporter. For BOS v1, the work is done by BOA.

Other than the API server, there are only two parts of BOS that ever directly access the BOS databases. See BOS database access for details.

Kubernetes deployment

(ncn-mw#) The BOS API server is a Kubernetes deployment in the services namespace:

kubectl get deployments -n services -l app.kubernetes.io/name=cray-bos

Example output:

NAME       READY   UP-TO-DATE   AVAILABLE   AGE
cray-bos   2/2     2            2           11d

(ncn-mw#) The BOS API server runs in multiple Kubernetes pods in the services namespace.

kubectl get pods -n services -l app.kubernetes.io/name=cray-bos

Example output:

NAME                       READY   STATUS    RESTARTS   AGE
cray-bos-994fc7c59-298g8   2/2     Running   0          50d
cray-bos-994fc7c59-z2r2q   2/2     Running   0          50d

Options

Although many of the BOS v2 Options do not impact the behavior of the API server, the logging_level option does. This option determines the verbosity of BOS logging, including the BOS API server. This option also impacts the logging level for the BOS v1 portions of the API server. The server logs can be viewed by looking at the logs of the pods in the server Kubernetes deployment.

See Options for more information.

Migration job

When the cray-bos Kubernetes deployment is upgraded, the cray-bos-migration job runs in the services namespace. It checks data in the BOS databases and for each session template found in the BOS v1 session templates database, it does the following:

  1. Converts the BOS v1 template to follow the BOS v2 format.
  2. Adds the converted template to the BOS v2 session templates database.
  3. Removes the original template from the BOS v1 session templates database.

Specification

For the full OpenAPI specification, see the Cray-HPE/bos open source GitHub repository.

Source

For the source for the BOS API server, including its Helm chart, see the Cray-HPE/bos open source GitHub repository.