Status

The Status API provides unauthenticated endpoints to retrieve resource status and scheduled downtimes. Only resource-specific information related to the Facility API in the related security enclave is monitored.

Required Permission: None—all status endpoints are open.

Note

The Python and Go examples on this page use gRPC client packages that are not yet publicly available. ORNL-internal users may request access by contacting the S3M team: olcf-s3m@email.ornl.gov. The REST API (via curl or otherwise) is available to all users.

List All Resources

Obtain a list of all monitored resources, their status, and any upcoming downtimes.

GET /olcf/v1alpha/status

curl https://s3m.olcf.ornl.gov/olcf/v1alpha/status
from betterproto.lib.std.google.protobuf import Empty

client = factory.create_client(StatusStub)
resources = await client.list_resources(Empty())
import (
    "context"
    "google.golang.org/protobuf/types/known/emptypb"
    statuspb "s3m.olcf.ornl.gov/apis/status/v1alpha"
)

client := statuspb.NewStatusClient(conn)
resources, err := client.ListResources(context.Background(), &emptypb.Empty{})
import requests

S3M_BASE_PATH = "https://s3m.olcf.ornl.gov/olcf/v1alpha"

response = requests.get(
    S3M_BASE_PATH + "/status",
)

if response.ok:
    status_response = response.json()
    print(status_response)

else:
    raise ValueError("Request to S3M failed")

Response:

{
    "resources": [
        {
            "name": "defiant",
            "description": "Defiant",
            "systemType": "resource",
            "securityEnclave": "open",
            "organization": "olcf",
            "status": "OPERATIONAL",
            "downtimeScheduleAvailable": true,
            "upcomingDowntimes": [
                {
                    "resourceName": "defiant",
                    "status": "UNAVAILABLE",
                    "start": "2024-04-20T11:40:00Z",
                    "end": "2024-04-21T11:40:00Z",
                    "description": "Compute system hardware maintenance"
                }
            ],
            "retrievedAt": "2024-04-19T13:45:01Z"
        }
    ]
}

The downtimeScheduleAvailable field indicates if the resource has planned downtime scheduling. Testbed resources (e.g., Defiant) may not plan downtimes in advance, so upcomingDowntimes may be absent.

Cache

Rate Limit

15 minutes

None

Get Specific Resource

Obtain status for a single resource by name.

GET /olcf/v1alpha/status/{resourceName}

curl https://s3m.olcf.ornl.gov/olcf/v1alpha/status/defiant
from s3m_apis_betterproto.status.v1alpha import GetResourceRequest

client = factory.create_client(StatusStub)
resource = await client.get_resource(GetResourceRequest(resource_name="defiant"))
import (
    "context"
    statuspb "s3m.olcf.ornl.gov/apis/status/v1alpha"
)

client := statuspb.NewStatusClient(conn)
resource, err := client.GetResource(context.Background(), &statuspb.GetResourceRequest{ResourceName: "defiant"})
import requests

S3M_BASE_PATH = "https://s3m.olcf.ornl.gov/olcf/v1alpha"

response = requests.get(
    S3M_BASE_PATH + "/status/defiant",
)

if response.ok:
    status_response = response.json()
    print(status_response)

else:
    raise ValueError("Request to S3M failed")

Response:

{
    "name": "defiant",
    "description": "Defiant",
    "systemType": "resource",
    "securityEnclave": "open",
    "organization": "olcf",
    "status": "OPERATIONAL",
    "downtimeScheduleAvailable": true,
    "upcomingDowntimes": [
        {
            "resourceName": "defiant",
            "status": "UNAVAILABLE",
            "start": "2024-04-20T11:40:00Z",
            "end": "2024-04-21T11:40:00Z",
            "description": "Compute system hardware maintenance"
        }
    ],
    "retrievedAt": "2024-04-19T13:45:01Z"
}

Cache

Rate Limit

15 minutes

None

List Current Downtimes

Retrieve all downtimes currently in effect.

GET /olcf/v1alpha/status/downtimes

curl https://s3m.olcf.ornl.gov/olcf/v1alpha/status/downtimes
from betterproto.lib.std.google.protobuf import Empty

client = factory.create_client(StatusStub)
downtimes = await client.list_downtimes_current(Empty())
import (
    "context"
    "google.golang.org/protobuf/types/known/emptypb"
    statuspb "s3m.olcf.ornl.gov/apis/status/v1alpha"
)

client := statuspb.NewStatusClient(conn)
downtimes, err := client.ListDowntimesCurrent(context.Background(), &emptypb.Empty{})
import requests

S3M_BASE_PATH = "https://s3m.olcf.ornl.gov/olcf/v1alpha"

response = requests.get(
    S3M_BASE_PATH + "/status/downtimes",
)

if response.ok:
    status_response = response.json()
    print(status_response)

else:
    raise ValueError("Request to S3M failed")

Response:

{
    "downtimes": [
        {
            "resourceName": "defiant",
            "status": "UNAVAILABLE",
            "start": "2024-04-20T11:40:00Z",
            "end": "2024-04-21T11:40:00Z",
            "description": "Compute system hardware maintenance",
            "attributes": {
                "scheduled": true,
                "reboot": true
            },
            "updatedAt": "2024-04-19T13:40:29Z"
        }
    ]
}

Cache

Rate Limit

15 minutes

None

List Upcoming Downtimes

Retrieve all scheduled downtimes within the next 10 days.

GET /olcf/v1alpha/status/downtimes/upcoming

curl https://s3m.olcf.ornl.gov/olcf/v1alpha/status/downtimes/upcoming
from betterproto.lib.std.google.protobuf import Empty

client = factory.create_client(StatusStub)
downtimes = await client.list_downtimes_upcoming(Empty())
import (
    "context"
    "google.golang.org/protobuf/types/known/emptypb"
    statuspb "s3m.olcf.ornl.gov/apis/status/v1alpha"
)

client := statuspb.NewStatusClient(conn)
downtimes, err := client.ListDowntimesUpcoming(context.Background(), &emptypb.Empty{})
import requests

S3M_BASE_PATH = "https://s3m.olcf.ornl.gov/olcf/v1alpha"

response = requests.get(
    S3M_BASE_PATH + "/downtimes/upcoming",
)

if response.ok:
    status_response = response.json()
    print(status_response)

else:
    raise ValueError("Request to S3M failed")

Response:

{
    "downtimes": [
        {
            "resourceName": "defiant",
            "status": "UNAVAILABLE",
            "start": "2024-04-20T11:40:00Z",
            "end": "2024-04-21T11:40:00Z",
            "description": "Compute system hardware maintenance",
            "attributes": {
                "scheduled": true,
                "reboot": true
            },
            "updatedAt": "2024-04-19T13:40:29Z"
        }
    ]
}

Cache

Rate Limit

15 minutes

None