Skip to content

feat(apple_silicon): add vnc diagnostic api definition #747

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions scaleway-async/scaleway_async/applesilicon/v1alpha1/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# This file was automatically generated. DO NOT EDIT.
# If you have any remark or suggestion do not hesitate to open an issue.
from .types import ConnectivityDiagnosticActionType
from .types import ConnectivityDiagnosticDiagnosticStatus
from .types import ListServersRequestOrderBy
from .types import ServerStatus
from .content import SERVER_TRANSIENT_STATUSES
Expand All @@ -10,10 +12,13 @@
from .types import ServerTypeGPU
from .types import ServerTypeMemory
from .types import ServerTypeNetwork
from .types import ConnectivityDiagnosticServerHealth
from .types import ServerType
from .types import Server
from .types import ConnectivityDiagnostic
from .types import CreateServerRequest
from .types import DeleteServerRequest
from .types import GetConnectivityDiagnosticRequest
from .types import GetOSRequest
from .types import GetServerRequest
from .types import GetServerTypeRequest
Expand All @@ -25,10 +30,14 @@
from .types import ListServersResponse
from .types import RebootServerRequest
from .types import ReinstallServerRequest
from .types import StartConnectivityDiagnosticRequest
from .types import StartConnectivityDiagnosticResponse
from .types import UpdateServerRequest
from .api import ApplesiliconV1Alpha1API

__all__ = [
"ConnectivityDiagnosticActionType",
"ConnectivityDiagnosticDiagnosticStatus",
"ListServersRequestOrderBy",
"ServerStatus",
"SERVER_TRANSIENT_STATUSES",
Expand All @@ -39,10 +48,13 @@
"ServerTypeGPU",
"ServerTypeMemory",
"ServerTypeNetwork",
"ConnectivityDiagnosticServerHealth",
"ServerType",
"Server",
"ConnectivityDiagnostic",
"CreateServerRequest",
"DeleteServerRequest",
"GetConnectivityDiagnosticRequest",
"GetOSRequest",
"GetServerRequest",
"GetServerTypeRequest",
Expand All @@ -54,6 +66,8 @@
"ListServersResponse",
"RebootServerRequest",
"ReinstallServerRequest",
"StartConnectivityDiagnosticRequest",
"StartConnectivityDiagnosticResponse",
"UpdateServerRequest",
"ApplesiliconV1Alpha1API",
]
72 changes: 72 additions & 0 deletions scaleway-async/scaleway_async/applesilicon/v1alpha1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
)
from .types import (
ListServersRequestOrderBy,
ConnectivityDiagnostic,
CreateServerRequest,
ListOSResponse,
ListServerTypesResponse,
Expand All @@ -24,6 +25,8 @@
ReinstallServerRequest,
Server,
ServerType,
StartConnectivityDiagnosticRequest,
StartConnectivityDiagnosticResponse,
UpdateServerRequest,
)
from .content import (
Expand All @@ -33,11 +36,14 @@
unmarshal_OS,
unmarshal_ServerType,
unmarshal_Server,
unmarshal_ConnectivityDiagnostic,
unmarshal_ListOSResponse,
unmarshal_ListServerTypesResponse,
unmarshal_ListServersResponse,
unmarshal_StartConnectivityDiagnosticResponse,
marshal_CreateServerRequest,
marshal_ReinstallServerRequest,
marshal_StartConnectivityDiagnosticRequest,
marshal_UpdateServerRequest,
)

Expand Down Expand Up @@ -568,3 +574,69 @@ async def reinstall_server(

self._throw_on_error(res)
return unmarshal_Server(res.json())

async def start_connectivity_diagnostic(
self,
*,
server_id: str,
zone: Optional[Zone] = None,
) -> StartConnectivityDiagnosticResponse:
"""
:param server_id:
:param zone: Zone to target. If none is passed will use default zone from the config.
:return: :class:`StartConnectivityDiagnosticResponse <StartConnectivityDiagnosticResponse>`

Usage:
::

result = await api.start_connectivity_diagnostic(
server_id="example",
)
"""

param_zone = validate_path_param("zone", zone or self.client.default_zone)

res = self._request(
"POST",
f"/apple-silicon/v1alpha1/zones/{param_zone}/connectivity-diagnostics",
body=marshal_StartConnectivityDiagnosticRequest(
StartConnectivityDiagnosticRequest(
server_id=server_id,
zone=zone,
),
self.client,
),
)

self._throw_on_error(res)
return unmarshal_StartConnectivityDiagnosticResponse(res.json())

async def get_connectivity_diagnostic(
self,
*,
diagnostic_id: str,
zone: Optional[Zone] = None,
) -> ConnectivityDiagnostic:
"""
:param diagnostic_id:
:param zone: Zone to target. If none is passed will use default zone from the config.
:return: :class:`ConnectivityDiagnostic <ConnectivityDiagnostic>`

Usage:
::

result = await api.get_connectivity_diagnostic(
diagnostic_id="example",
)
"""

param_zone = validate_path_param("zone", zone or self.client.default_zone)
param_diagnostic_id = validate_path_param("diagnostic_id", diagnostic_id)

res = self._request(
"GET",
f"/apple-silicon/v1alpha1/zones/{param_zone}/connectivity-diagnostics/{param_diagnostic_id}",
)

self._throw_on_error(res)
return unmarshal_ConnectivityDiagnostic(res.json())
116 changes: 116 additions & 0 deletions scaleway-async/scaleway_async/applesilicon/v1alpha1/marshalling.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from scaleway_core.profile import ProfileDefaults
from .types import (
ConnectivityDiagnosticActionType,
OS,
ServerTypeCPU,
ServerTypeDisk,
Expand All @@ -14,11 +15,15 @@
ServerTypeNetwork,
ServerType,
Server,
ConnectivityDiagnosticServerHealth,
ConnectivityDiagnostic,
ListOSResponse,
ListServerTypesResponse,
ListServersResponse,
StartConnectivityDiagnosticResponse,
CreateServerRequest,
ReinstallServerRequest,
StartConnectivityDiagnosticRequest,
UpdateServerRequest,
)

Expand Down Expand Up @@ -315,6 +320,88 @@ def unmarshal_Server(data: Any) -> Server:
return Server(**args)


def unmarshal_ConnectivityDiagnosticServerHealth(
data: Any,
) -> ConnectivityDiagnosticServerHealth:
if not isinstance(data, dict):
raise TypeError(
"Unmarshalling the type 'ConnectivityDiagnosticServerHealth' failed as data isn't a dictionary."
)

args: Dict[str, Any] = {}

field = data.get("is_server_alive", None)
if field is not None:
args["is_server_alive"] = field

field = data.get("is_agent_alive", None)
if field is not None:
args["is_agent_alive"] = field

field = data.get("is_mdm_alive", None)
if field is not None:
args["is_mdm_alive"] = field

field = data.get("is_ssh_port_up", None)
if field is not None:
args["is_ssh_port_up"] = field

field = data.get("is_vnc_port_up", None)
if field is not None:
args["is_vnc_port_up"] = field

field = data.get("last_checkin_date", None)
if field is not None:
args["last_checkin_date"] = (
parser.isoparse(field) if isinstance(field, str) else field
)
else:
args["last_checkin_date"] = None

return ConnectivityDiagnosticServerHealth(**args)


def unmarshal_ConnectivityDiagnostic(data: Any) -> ConnectivityDiagnostic:
if not isinstance(data, dict):
raise TypeError(
"Unmarshalling the type 'ConnectivityDiagnostic' failed as data isn't a dictionary."
)

args: Dict[str, Any] = {}

field = data.get("id", None)
if field is not None:
args["id"] = field

field = data.get("status", None)
if field is not None:
args["status"] = field

field = data.get("is_healthy", None)
if field is not None:
args["is_healthy"] = field

field = data.get("supported_actions", None)
if field is not None:
args["supported_actions"] = (
[ConnectivityDiagnosticActionType(v) for v in field]
if field is not None
else None
)

field = data.get("error_message", None)
if field is not None:
args["error_message"] = field

field = data.get("health_details", None)
if field is not None:
args["health_details"] = unmarshal_ConnectivityDiagnosticServerHealth(field)
else:
args["health_details"] = None

return ConnectivityDiagnostic(**args)


def unmarshal_ListOSResponse(data: Any) -> ListOSResponse:
if not isinstance(data, dict):
raise TypeError(
Expand Down Expand Up @@ -372,6 +459,23 @@ def unmarshal_ListServersResponse(data: Any) -> ListServersResponse:
return ListServersResponse(**args)


def unmarshal_StartConnectivityDiagnosticResponse(
data: Any,
) -> StartConnectivityDiagnosticResponse:
if not isinstance(data, dict):
raise TypeError(
"Unmarshalling the type 'StartConnectivityDiagnosticResponse' failed as data isn't a dictionary."
)

args: Dict[str, Any] = {}

field = data.get("diagnostic_id", None)
if field is not None:
args["diagnostic_id"] = field

return StartConnectivityDiagnosticResponse(**args)


def marshal_CreateServerRequest(
request: CreateServerRequest,
defaults: ProfileDefaults,
Expand Down Expand Up @@ -405,6 +509,18 @@ def marshal_ReinstallServerRequest(
return output


def marshal_StartConnectivityDiagnosticRequest(
request: StartConnectivityDiagnosticRequest,
defaults: ProfileDefaults,
) -> Dict[str, Any]:
output: Dict[str, Any] = {}

if request.server_id is not None:
output["server_id"] = request.server_id

return output


def marshal_UpdateServerRequest(
request: UpdateServerRequest,
defaults: ProfileDefaults,
Expand Down
Loading