Description

When refactoring zypp we more than once thought about having a zyppd that can run in the background, multiple zypper instances could connect to it receiving current operations and, if the user rights match, control the operation.

Goals

  • Have a simple zyppd with some clearly defined protocol running
  • Investigate protocol options: dbus vs json-rpc
  • Simple frontend that can connect and run some task

Resources

  • C++ / C compiler
  • libzypp/zypper source code

Looking for hackers with the skills:

Nothing? Add some keywords!

This project is part of:

Hack Week 25

Activity

  • 1 day ago: j_renner liked this project.
  • 2 days ago: zbenjamin started this project.
  • 2 days ago: zbenjamin originated this project.

  • Comments

    • zbenjamin
      1 day ago by zbenjamin | Reply

      So as for a protocol there seem to be only a couple of options:

      • sdbus , would be what many service implementations use nowadays but couple us to systemd + dbus. Drawback here is that our minimal container images do not have systemd/dbus running so i'd need to fall back to peer-to-peer mode
      • the libzypp implementation of Stomp, would need a good amount of work to support things peer authentication
      • varlink, a library that is meant for exactly the use case "system services not using dbus"

    • zbenjamin
      1 day ago by zbenjamin | Reply

      Also not available in our minimal images: polkit, this would've been one of the strong points for dbus/system since we'd not need to do authentication ourselves.

    • zbenjamin
      1 day ago by zbenjamin | Reply

      varlink seems to be the most promising one for now, so i will go with that

    • zbenjamin
      about 8 hours ago by zbenjamin | Reply

      After some playing around with varlink it turns out that it has limitations when it comes to bidirectional communication. Messages must be strictly linear, one call -> direct answer. The server can not send spontaneous messages to the client without a previous message call. There is a way to stream "more" answers but it would require to have 2 sockets per client. Things like "prompt user" or "progress" would need a monitor socket making the whole architecture way too complex. We want to have a simple API clients can use

    Similar Projects

    This project is one of its kind!