Source code for hostedpi.models.sshkeys

from typing import Union

from pydantic import BaseModel, Field, FilePath

from ..utils import collect_ssh_keys


[docs] class SSHKeySources(BaseModel): """ Sources for SSH keys to be added to Pi servers :type ssh_keys: set[str] | None :param ssh_keys: Set of SSH key strings :type ssh_key_path: :class:`~pathlib.Path` | None :param ssh_key_path: Path to an SSH key file :type github_usernames: set[str] | None :param github_usernames: Set of GitHub usernames to collect SSH keys for :type launchpad_usernames: set[str] | None :param launchpad_usernames: Set of Launchpad usernames to collect SSH keys for :raises pydantic_core.ValidationError: If the SSH key sources are invalid """ ssh_keys: Union[set[str], None] = Field(default=None, description="Set of SSH key strings") ssh_key_path: Union[FilePath, None] = Field(default=None, description="Path to an SSH key file") github_usernames: Union[set[str], None] = Field( default=None, description="Set of GitHub usernames to collect SSH keys for" ) launchpad_usernames: Union[set[str], None] = Field( default=None, description="Set of Launchpad usernames to collect SSH keys for" )
[docs] def collect(self) -> Union[set[str], None]: """ Collect SSH keys from various sources, and return them as a set of strings which can be added to a Pi by setting :attr:`~hostedpi.pi.Pi.ssh_keys`. """ keys = collect_ssh_keys( ssh_keys=self.ssh_keys, ssh_key_path=self.ssh_key_path, github_usernames=self.github_usernames, launchpad_usernames=self.launchpad_usernames, ) return keys if keys else None