klippy_connection: save service info in database

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2023-02-26 16:52:27 -05:00
parent ead4cc21ce
commit 452aa9a931
No known key found for this signature in database
GPG Key ID: 5A1EB336DFB4C71B
1 changed files with 11 additions and 0 deletions

View File

@ -37,6 +37,7 @@ if TYPE_CHECKING:
from .components.file_manager.file_manager import FileManager
from .components.machine import Machine
from .components.job_state import JobState
from .components.database import MoonrakerDatabase as Database
FlexCallback = Callable[..., Optional[Coroutine]]
# These endpoints are reserved for klippy/moonraker communication only and are
@ -51,6 +52,7 @@ INIT_TIME = .25
LOG_ATTEMPT_INTERVAL = int(2. / INIT_TIME + .5)
MAX_LOG_ATTEMPTS = 10 * LOG_ATTEMPT_INTERVAL
UNIX_BUFFER_LIMIT = 20 * 1024 * 1024
SVC_INFO_KEY = "klippy_connection.service_info"
class KlippyConnection:
def __init__(self, server: Server) -> None:
@ -130,6 +132,13 @@ class KlippyConnection:
unit_name = svc_info.get("unit_name", "klipper.service")
return unit_name.split(".", 1)[0]
async def component_init(self) -> None:
db: Database = self.server.lookup_component('database')
machine: Machine = self.server.lookup_component("machine")
self._service_info = await db.get_item("moonraker", SVC_INFO_KEY, {})
if self._service_info:
machine.log_service_info(self._service_info)
async def wait_connected(self) -> bool:
if (
self.connection_task is None or
@ -261,6 +270,8 @@ class KlippyConnection:
"klipper", self._peer_cred["process_id"]
)
if svc_info != self._service_info:
db: Database = self.server.lookup_component('database')
db.insert_item("moonraker", SVC_INFO_KEY, svc_info)
self._service_info = svc_info
machine.log_service_info(svc_info)
self.event_loop.create_task(self._read_stream(reader))