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 |