43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""HAL9002 parameter handling for the special agent"""
|
|
|
|
from collections.abc import Iterable
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from cmk.server_side_calls.v1 import (
|
|
HostConfig,
|
|
Secret,
|
|
SpecialAgentCommand,
|
|
SpecialAgentConfig,
|
|
)
|
|
|
|
|
|
class Hal9002Params(BaseModel):
|
|
"""defines all needed parameters for the special agent"""
|
|
|
|
hostname: str | None = None
|
|
username: str | None = None
|
|
password: Secret | None = None
|
|
|
|
|
|
def agent_hal9002_arguments(
|
|
params: Hal9002Params, _host_config: HostConfig
|
|
) -> Iterable[SpecialAgentCommand]:
|
|
"""replaces the argument_thingy from the old API"""
|
|
command_arguments: list[str | Secret] = []
|
|
if params.hostname is not None:
|
|
command_arguments += ["--hostname", params.hostname]
|
|
if params.username is not None:
|
|
command_arguments += ["--username", params.username]
|
|
if params.password is not None:
|
|
command_arguments += ["--password", params.password.unsafe()]
|
|
yield SpecialAgentCommand(command_arguments=command_arguments)
|
|
|
|
|
|
special_agent_hal9002 = SpecialAgentConfig(
|
|
# name must be the filename of the executable for the special agent (without prefix)
|
|
name="hal9002",
|
|
parameter_parser=Hal9002Params.model_validate,
|
|
commands_function=agent_hal9002_arguments,
|
|
)
|