Source code for air_sdk.endpoints.services
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
# All rights reserved.
# SPDX-License-Identifier: MIT
from __future__ import annotations
from dataclasses import dataclass, field
from datetime import datetime
from air_sdk.air_model import AirModel, BaseEndpointAPI
from air_sdk.bc import BaseCompatMixin, ServiceCompatMixin, ServiceEndpointAPICompatMixin
from air_sdk.endpoints import mixins
from air_sdk.endpoints.interfaces import Interface
[docs]
@dataclass(eq=False)
class Service(ServiceCompatMixin, BaseCompatMixin, AirModel):
id: str
name: str
node_port: int
service_type: str
created: datetime = field(repr=False)
modified: datetime = field(repr=False)
interface: Interface = field(metadata=AirModel.FIELD_FOREIGN_KEY, repr=False)
worker_port: int | None = field(default=None, repr=False)
worker_fqdn: str | None = field(default=None, repr=False)
[docs]
@classmethod
def get_model_api(cls) -> type[ServiceEndpointAPI]:
return ServiceEndpointAPI
@property
def model_api(self) -> ServiceEndpointAPI:
return self.get_model_api()(self.__api__)
[docs]
class ServiceEndpointAPI(
ServiceEndpointAPICompatMixin,
mixins.ListApiMixin[Service],
mixins.CreateApiMixin[Service],
mixins.GetApiMixin[Service],
mixins.DeleteApiMixin,
BaseEndpointAPI[Service],
):
API_PATH = 'simulations/nodes/interfaces/services/'
model = Service
# NOTE: Services are immutable after creation - delete and recreate to change
# The Air API does not support PATCH/PUT (update operations)