Skip to content

Commit

Permalink
* [apiclient] reorganize stub files
Browse files Browse the repository at this point in the history
  • Loading branch information
lanfon72 committed Nov 9, 2023
1 parent c29789e commit 0a64e3a
Show file tree
Hide file tree
Showing 21 changed files with 991 additions and 885 deletions.
54 changes: 37 additions & 17 deletions apiclient/harvester_api/api.pyi
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
from typing import Type, TypeVar, TypeAlias, Optional, NoReturn, Iterable, ClassVar
from typing import Type, TypeVar, TypeAlias, Optional, NoReturn, Iterable, ClassVar, Tuple

from packaging import version
from requests import Session

from .managers import (
HostManager, KeypairManager, ImageManager, SettingManager,
NetworkManager, VolumeManager, TemplateManager, SupportBundlemanager,
ClusterNetworkManager, VirtualMachineManager, BackupManager
)
from . import managers
from .managers.base import DEFAULT_NAMESPACE


API_T = TypeVar('API_T', bound='HarvesterAPI')
Version: TypeAlias = version._BaseVersion
Expand All @@ -21,17 +19,25 @@ class HarvesterAPI:

session: Session
endpoint: Url
hosts: Type[HostManager]
keypairs: Type[KeypairManager]
images: Type[ImageManager]
networks: Type[NetworkManager]
volumes: Type[VolumeManager]
templates: Type[TemplateManager]
supportbundle: Type[SupportBundlemanager]
settings: Type[SettingManager]
clusternetworks: Type[ClusterNetworkManager]
vms: Type[VirtualMachineManager]
backups: Type[BackupManager]
hosts: managers.HostManager
keypairs: managers.KeypairManager
images: managers.ImageManager
networks: managers.NetworkManager
volumes: managers.VolumeManager
templates: managers.TemplateManager
supportbundle: managers.SupportBundleManager
settings: managers.SettingManager
clusternetworks: managers.ClusterNetworkManager
vms: managers.VirtualMachineManager
backups: managers.BackupManager
vm_snapshots: managers.VirtualMachineSnapshotManager
scs: managers.StorageClassManager

versions: managers.VersionManager
upgrades: managers.UpgradeManager
lhreplicas: managers.LonghornReplicaManager
lhvolumes: managers.LonghornVolumeManager
lhbackupvolumes: managers.LonghornBackupVolumeManager

@classmethod
def login(
Expand All @@ -56,6 +62,9 @@ class HarvesterAPI:
def cluster_version(self) -> Version:
"""
"""
def load_managers(self, target_version: str = "") -> NoReturn:
"""
"""
def get_url(self,
path: str) -> Url:
"""
Expand All @@ -74,3 +83,14 @@ class HarvesterAPI:
def generate_kubeconfig(self) -> str:
"""
"""
def get_pods(self, name: str = "", namespace: str = DEFAULT_NAMESPACE) -> Tuple[int, dict]:
"""
"""
def get_apps_catalog(
self, name: str = "", namespace: str = DEFAULT_NAMESPACE
) -> Tuple[int, dict]:
"""
"""
def get_crds(self, name: str = "") -> Tuple[int, dict]:
"""
"""
11 changes: 9 additions & 2 deletions apiclient/harvester_api/managers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .base import DEFAULT_NAMESPACE
from .hosts import HostManager
from .images import ImageManager
from .volumes import VolumeManager
Expand All @@ -12,8 +13,11 @@
from .volumesnapshots import VolumeSnapshotManager
from .virtualmachines import VirtualMachineManager
# Not available in dashboard
from .internals import VersionManager, UpgradeManager
from .longhorns import LonghornReplicaManager, LonghornVolumeManager, LonghornBackupVolumeManager
from .internals import VersionManager, UpgradeManager, DEFAULT_HARVESTER_NAMESPACE
from .longhorns import (
LonghornReplicaManager, LonghornVolumeManager, LonghornBackupVolumeManager,
DEFAULT_LONGHORN_NAMESPACE
)

__all__ = [
"HostManager",
Expand All @@ -31,4 +35,7 @@
"BackupManager", "VirtualMachineSnapshotManager",
"VersionManager", "UpgradeManager",
"LonghornReplicaManager", "LonghornVolumeManager", "LonghornBackupVolumeManager",
"DEFAULT_HARVESTER_NAMESPACE",
"DEFAULT_NAMESPACE",
"DEFAULT_LONGHORN_NAMESPACE"
]
45 changes: 45 additions & 0 deletions apiclient/harvester_api/managers/backups.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from typing import ClassVar, Optional, Callable, Type

from requests.models import Response

from harvester_api.models.backups import RestoreSpec
from .base import BaseManager


class BackupManager(BaseManager):
BACKUP_fmt: ClassVar[str]
RESTORE_fmt: ClassVar[str]
RestoreSpec: Type[RestoreSpec]

def get(
self,
name: str = ...,
namespace: str = ...,
*,
raw: Optional[bool] = ...,
**kwargs
) -> dict | Response:
"""
"""
def create(
self,
name: str,
restore_spec: Type[RestoreSpec],
namespace: str = ...,
*,
raw: Optional[bool] = ...,
**kwargs
) -> dict | Response:
"""
"""
def delete(
self,
name: str,
namespace: str = ...,
*,
raw: Optional[bool] = ...,
**kwargs
) -> dict | Response:
"""
"""
restore: Callable
31 changes: 31 additions & 0 deletions apiclient/harvester_api/managers/base.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from __future__ import annotations
from typing import Final, NoReturn, ClassVar, Type

from .api import HarvesterAPI

DEFAULT_NAMESPACE: Final[str]


def merge_dict(src: dict, dest: dict) -> dict:
"""
"""


class BaseManager:
support_to: ClassVar[str]

@classmethod
def is_support(cls, target_version: str) -> bool:
"""
"""
@classmethod
def for_version(cls, version: str) -> Type[BaseManager]:
"""
"""
def __init__(self, api: HarvesterAPI) -> NoReturn:
"""
"""
@property
def api(self) -> HarvesterAPI:
"""
"""
110 changes: 110 additions & 0 deletions apiclient/harvester_api/managers/clusternetworks.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
from typing import ClassVar, Optional
from collections.abc import Mapping

from requests.models import Response

from .base import BaseManager


class ClusterNetworkManager(BaseManager):
PATH_fmt: ClassVar[str]
CONFIG_fmt: ClassVar[str]

def create_data(
self,
name: str,
description: str = ...,
labels: Optional[dict] = ...,
annotations: Optional[dict] = ...
) -> dict:
"""
"""
def create_config_data(
self,
name: str,
clusternetwork: str,
*nics: str,
bond_mode: Optional[str] = ...,
hostname: Optional[str] = ...,
miimon: Optional[int] = ...,
mtu: Optional[int] = ...
) -> dict:
"""
"""
def get(
self,
name: str = ...,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def create(
self,
name: str,
description: str = ...,
labels: Optional[dict] = ...,
annotations: Optional[dict] = ...,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def update(
self,
name: str,
data: Mapping,
*,
raw: Optional[bool] = ...,
as_json: Optional[bool] = ...,
**kwargs
) -> dict | Response:
"""
"""
def delete(
self,
name: str,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def get_config(
self,
name: str = ...,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def create_config(
self,
name: str,
clusternetwork: str,
*nics: str,
bond_mode: Optional[str] = ...,
hostname: Optional[str] = ...,
miimon: Optional[int] = ...,
mtu: Optional[int] = ...,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def update_config(
self,
name: str,
data: Mapping,
*,
raw: Optional[bool] = ...,
as_json: Optional[bool] = ...,
**kwargs
) -> dict | Response:
"""
"""
def delete_config(
self,
name: str,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
57 changes: 57 additions & 0 deletions apiclient/harvester_api/managers/hosts.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from typing import ClassVar, Optional, NoReturn
from collections.abc import Mapping

from requests.models import Response

from .base import BaseManager


class HostManager(BaseManager):
PATH_fmt: ClassVar[str]
METRIC_fmt: ClassVar[str]

def get(
self,
name: str = ...,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def create(self, *args, **kwargs) -> NoReturn:
"""
"""
def update(
self,
name: str,
data: Mapping,
*,
raw: Optional[bool] = ...,
as_json: Optional[bool] = ...,
**kwargs
) -> dict | Response:
"""
"""
def delete(
self,
name: str,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def get_metrics(
self,
name: str = ...,
*,
raw: Optional[bool] = ...
) -> dict | Response:
"""
"""
def maintenance_mode(
self,
name: str,
enable: Optional[bool] = ...
) -> dict:
"""
"""
Loading

0 comments on commit 0a64e3a

Please sign in to comment.