Source code for ansible_aap_api_client.hosts

"""
AAP Groups
"""

from ansible_aap_api_client.base_connection import _BaseConnection
from ansible_aap_api_client.schemas import InventoryHostRequestSchema


[docs] class Host(_BaseConnection): """Host class :type base_url: str :param base_url: The base url to use :type username: str :param username: The username to use :type password: str :param password: The password to use :type ssl_verify: Optional[Union[bool, str]] = True :param ssl_verify: The SSL verification True or False or a path to a certificate """ hosts_uri = "/hosts/"
[docs] def get_all_hosts(self) -> dict: """Get all hosts :rtype: Dict :returns: Response """ return self._get(uri=self.hosts_uri).json()
[docs] def get_host(self, name: str) -> dict: """Get all instances of a host by name :type name: str :param name: The name of the host :rtype: Dict :returns: Response :raises TypeError: If name is not of type str """ if not isinstance(name, str): raise TypeError(f"name must be of type str, but received {type(name)}") return self._get(uri=self.hosts_uri, params={"name": name}).json()
[docs] def get_host_id(self, name: str) -> int: """Get the id of a host if one exists :type name: str :param name: The name of the host :rtype: int :returns: The id of the host :raises ValueError: If zero or more than one instance is found :raises TypeError: If name is not of type str """ if not isinstance(name, str): raise TypeError(f"name must be of type str, but received {type(name)}") response = self.get_host(name=name).get("results") if len(response) != 1: raise ValueError(f"Expected 1 result, but received {len(response)}") return response[0]["id"]
[docs] def delete_host(self, host_id: int) -> int: """Delete a host :type host_id: int :param host_id: The id of the host :rtype: int :returns: The id of the deleted host """ uri = f"{self.hosts_uri}{host_id}/" if not isinstance(host_id, int): raise TypeError(f"host_id must be of type int, but received {type(host_id)}") return self._delete(uri=uri).status_code
[docs] def update_host(self, host_id: int, host: InventoryHostRequestSchema) -> dict: """Update a host :type host_id: int :param host_id: The id of the host :type host: InventoryHostRequestSchema :param host: The host object :rtype: dict :returns: The updated host """ uri = f"{self.hosts_uri}{host_id}/" if not isinstance(host_id, int): raise TypeError(f"host_id must be of type int, but received {type(host_id)}") if not isinstance(host, InventoryHostRequestSchema): raise TypeError(f"host must be of type InventoryHostRequestSchema, but received {type(host)}") return self._patch(uri=uri, json_data=host.dict()).json()