vpsc.client のソースコード

from types import MappingProxyType
from typing import Optional, Iterable, List

from pydantic_settings import BaseSettings, SettingsConfigDict

from .models.custom import (
    server_sort_query,
    UpdateServer,
    ShutdownServer,
    UpdateHost,
    UpdateNfsServer,
    UpdateNfsServerIpv4,
    CreateSwitch,
    UpdateSwitch,
    Ptr,
    UpdateApiKey,
    CreateRole,
    UpdateRole,
    CreateApiKey,
)
from .models.generated import (
    Server,
    ServerPowerStatus,
    NfsServer,
    NfsServerPowerStatus,
    Switch,
    Limitation,
    ApiKey,
    Role,
    Permission,
)
from .api_request import APIRequest


[ドキュメント] class APIConfig(BaseSettings): model_config = SettingsConfigDict(env_file="~/.vpsc", env_file_encoding="utf-8", env_prefix="vps_") host: str = "https://secure.sakura.ad.jp/vps/api/v7" api_key: str
[ドキュメント] class Client: def __init__(self, config: APIConfig): self.config = config self.header = MappingProxyType({"Authorization": f"Bearer {self.config.api_key}"}) self.client = APIRequest(config=self.config, header=self.header)
[ドキュメント] def get_servers(self, sort: Optional[server_sort_query] = None) -> Iterable[Server]: """ サーバー一覧を取得する :param sort: ソート情報 :return: """ return self.client.request( endpoint="/servers", method="get", response_obj=Server, )
[ドキュメント] def get_server(self, server_id: int) -> Server: """ サーバー情報を取得する :param server_id: サーバーID :return: """ return self.client.request( endpoint=f"/servers/{server_id}", method="get", response_obj=Server, )
[ドキュメント] def update_server(self, server_id: int, data: UpdateServer) -> Server: """ サーバー情報を更新する :param server_id: サーバーID :param data: 更新データ :return: """ return self.client.request( endpoint=f"/servers/{server_id}", method="put", data=data, response_obj=Server, )
[ドキュメント] def get_server_power_status(self, server_id: int) -> ServerPowerStatus: """ サーバーの電源状態を取得する :param server_id: サーバーID :return: """ return self.client.request( endpoint=f"/servers/{server_id}/power-status", method="get", response_obj=ServerPowerStatus, )
[ドキュメント] def power_on_server(self, server_id: int): """ サーバーを起動する :param server_id: サーバーID :return: """ return self.client.request( endpoint=f"/servers/{server_id}/power-on", method="post", )
[ドキュメント] def shutdown_server(self, server_id: int, force: bool = False): """ サーバーをシャットダウンする :param force: 強制停止を行うか :param server_id: サーバーID :return: """ data = ShutdownServer(force=force) return self.client.request( endpoint=f"/servers/{server_id}/shutdown", method="post", data=data, )
[ドキュメント] def force_force_reboot_server(self, server_id: int): """ サーバーを強制再起動する :param server_id: サーバーID :return: """ return self.client.request( endpoint=f"/servers/{server_id}/force-reboot", method="post", )
[ドキュメント] def update_server_ipv4_ptr(self, server_id: int, data: UpdateHost): """ サーバーのipv4の逆引きホスト名を設定する :param server_id: サーバーID :param data: 設定データ :return: """ return self.client.request( endpoint=f"/servers/{server_id}/ipv4-ptr", method="put", data=data, response_obj=Ptr, )
[ドキュメント] def update_server_ipv6_ptr(self, server_id: int, data: UpdateHost): """ サーバーのipv6の逆引きホスト名を設定する :param server_id: サーバーID :param data: 設定データ :return: """ return self.client.request( endpoint=f"/servers/{server_id}/ipv6-ptr", method="put", data=data, response_obj=Ptr, )
[ドキュメント] def get_server_limitation(self, server_id: int) -> Limitation: """ サーバーの制限情報を取得する :param server_id: サーバーID :return: """ return self.client.request( endpoint=f"/servers/{server_id}/limitation", method="get", response_obj=Limitation, )
[ドキュメント] def get_nfs_servers(self) -> Iterable[NfsServer]: """ NFSサーバー情報一覧を取得する :return: """ return self.client.request( endpoint=f"/nfs-servers", method="get", response_obj=NfsServer, )
[ドキュメント] def get_nfs_server(self, nfs_server_id: int) -> NfsServer: """ NFSサーバー情報を取得する :param nfs_server_id: NFSサーバーID :return: """ return self.client.request( endpoint=f"/nfs-servers/{nfs_server_id}", method="get", response_obj=NfsServer, )
[ドキュメント] def update_nfs_server(self, nfs_server_id: int, data: UpdateNfsServer): """ NFSサーバー情報を更新する :param nfs_server_id: NFSサーバーID :param data: 更新データ :return: """ return self.client.request( endpoint=f"/nfs-servers/{nfs_server_id}", method="put", data=data, response_obj=NfsServer, )
[ドキュメント] def update_nfs_server_ipv4(self, nfs_server_id: int, data: UpdateNfsServerIpv4): """ NFSサーバーのipv4を設定する :param nfs_server_id: NFSサーバーID :param data: 設定情報 :return: """ return self.client.request( endpoint=f"/nfs-servers/{nfs_server_id}/ipv4", method="put", data=data, )
[ドキュメント] def get_nfs_server_power_status(self, nfs_server_id: int) -> NfsServerPowerStatus: """ NFSサーバーの電源状態を取得する :param nfs_server_id: :return: """ return self.client.request( endpoint=f"/nfs-servers/{nfs_server_id}/power-status", method="get", response_obj=NfsServerPowerStatus )
[ドキュメント] def create_switch(self, data: CreateSwitch) -> Switch: """ スイッチを作成する :param data: 作成データ :return: """ return self.client.request( endpoint=f"/switches", method="post", data=data, response_obj=Switch, )
[ドキュメント] def get_switches(self) -> Iterable[Switch]: """ スイッチ情報一覧を取得する :return: """ return self.client.request( endpoint=f"/switches", method="get", response_obj=Switch, )
[ドキュメント] def get_switch(self, switch_id: int) -> Switch: """ スイッチ情報を取得する :param switch_id: スイッチID :return: """ return self.client.request( endpoint=f"/switches/{switch_id}", method="get", response_obj=Switch, )
[ドキュメント] def update_switch(self, switch_id: int, data: UpdateSwitch) -> Switch: """ スイッチ情報を更新する :param switch_id: スイッチID :param data: 更新データ :return: """ return self.client.request( endpoint=f"/switches/{switch_id}", method="put", data=data, response_obj=Switch, )
[ドキュメント] def delete_switch(self, switch_id: int): """ スイッチを削除する :param switch_id: スイッチID :return: """ return self.client.request( endpoint=f"/switches/{switch_id}", method="delete", )
[ドキュメント] def get_api_keys(self) -> Iterable[ApiKey]: """ APIキーの一覧を取得する :return: """ return self.client.request( endpoint=f"/api-keys", method="get", response_obj=ApiKey, )
[ドキュメント] def get_api_key(self, key_id: int) -> ApiKey: """ APIキーを取得する :param key_id: :return: """ return self.client.request( endpoint=f"/api-keys/{key_id}", method="get", response_obj=ApiKey, )
[ドキュメント] def create_api_key(self, data: CreateApiKey) -> ApiKey: """ APIキーを作成する :param data: :return: """ return self.client.request( endpoint=f"/api-keys", method="post", data=data, response_obj=ApiKey, )
[ドキュメント] def update_api_key(self, key_id: int, data: UpdateApiKey) -> ApiKey: """ APIキーを更新する :param key_id: :return: """ return self.client.request( endpoint=f"/api-keys/{key_id}", method="put", data=data, response_obj=ApiKey, )
[ドキュメント] def delete_api_key(self, key_id: int) -> ApiKey: """ APIキーを削除する :param key_id: :return: """ return self.client.request( endpoint=f"/api-keys/{key_id}", method="delete", )
[ドキュメント] def rotate_api_key(self, key_id: int) -> ApiKey: """ APIキーのトークンのローテーションを行う :param key_id: :return: """ return self.client.request( endpoint=f"/api-keys/{key_id}", method="put", response_obj=ApiKey, )
[ドキュメント] def create_role(self, data: CreateRole) -> Role: """ ロールを作成する :return: """ return self.client.request( endpoint=f"/roles", method="post", data=data, response_obj=Role, )
[ドキュメント] def get_role(self, role_id: int) -> Role: """ ロールを取得する :param role_id: :return: """ return self.client.request( endpoint=f"/roles/{role_id}", method="get", response_obj=Role, )
[ドキュメント] def update_role(self, role_id: int, data: UpdateRole) -> Role: """ ロールを更新する :param role_id: :param data: :return: """ return self.client.request( endpoint=f"/roles/{role_id}", method="put", data=data, response_obj=Role, )
[ドキュメント] def delete_role(self, role_id: int) -> Role: """ ロールを削除する :param role_id: :return: """ return self.client.request( endpoint=f"/roles/{role_id}", method="delete", )
[ドキュメント] def get_permissions(self) -> Iterable[Permission]: """ 権限の一覧を取得する :return: """ return self.client.request( endpoint=f"/permissions", method="get", response_obj=Permission, )