[PATCH 0/7] spec: Decompose the daemon subpackage

Jim Fehlig posted 7 patches 1 year, 4 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
libvirt.spec.in | 274 ++++++++++++++++++++++++++++++++----------------
1 file changed, 183 insertions(+), 91 deletions(-)
[PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Jim Fehlig 1 year, 4 months ago
This is a V1 of my previous RFC to decompose the libvirt-daemon package

https://listman.redhat.com/archives/libvir-list/2022-November/235924.html

The end goal is to remove the libvirt-dameon dependency on the various
libvirt-daemon-driver-foo subpackages, allowing installation of a
modular daemon configuration without the traditional monolithic libvirtd.

Change from V1:
- Patches1-3 handled separate from this series since they are unrelated
- virtlockd, virtlogd, and virtproxyd are moved to their own subpackages
- lockd plugin moved to its own subpackage
- virt-admin, virt-host-validate, and others moved to new subpackage

TODO:
The libvirt-daemon package still contains the following files, which likely
need to move somewhere since they are needed by the modular daemons too.

%{_unitdir}/virt-guest-shutdown.target
I thought of moving this to the libs package, but that would be a change
for installations with only libvirt-client. AFAICT, it's used by
libvirt-guests and the qemu and lxc drivers.

%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
Another file related to remote access. Should it go to libvirt-libs?

%ghost %dir %{_rundir}/libvirt/
%ghost %dir %{_rundir}/libvirt/common/
%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/
%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/
%dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/
%dir %attr(0755, root, root) %{_libdir}/libvirt/
%dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/
These files and directories are needed by the modular daemons as well,
right? Where should they go? libvirt-daemon-<hypervisor> or
libvirt-daemon-driver-<hypervisor>?

%{_datadir}/polkit-1/actions/org.libvirt.unix.policy
%{_datadir}/polkit-1/actions/org.libvirt.api.policy
%{_datadir}/polkit-1/rules.d/50-libvirt.rules
More files related to access. libvirt-libs?

Jim Fehlig (7):
  spec: Move virtlockd to a new subpackage libvirt-daemon-lock
  spec: Move virtlogd to a new subpackage libvirt-daemon-log
  spec: Move virtproxyd to a new subpackage libvirt-daemon-proxy
  spec: Move lockd plugin to a new subpackage
    libvirt-daemon-plugin-lockd
  spec: Move common files to a new subpackage libvirt-daemon-client
  spec: Remove libvirt-daemon dependecy from drivers
  spec: Remove libvirt-daemon dependency from hypervisor subpackages

 libvirt.spec.in | 274 ++++++++++++++++++++++++++++++++----------------
 1 file changed, 183 insertions(+), 91 deletions(-)

-- 
2.38.1
Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Daniel P. Berrangé 1 year, 4 months ago
On Fri, Dec 02, 2022 at 05:17:31PM -0700, Jim Fehlig wrote:
> This is a V1 of my previous RFC to decompose the libvirt-daemon package
> 
> https://listman.redhat.com/archives/libvir-list/2022-November/235924.html
> 
> The end goal is to remove the libvirt-dameon dependency on the various
> libvirt-daemon-driver-foo subpackages, allowing installation of a
> modular daemon configuration without the traditional monolithic libvirtd.

snip

>  libvirt.spec.in | 274 ++++++++++++++++++++++++++++++++----------------
>  1 file changed, 183 insertions(+), 91 deletions(-)

Could you also update docs/daemons.rst to mention the new sub-RPMS
that are getting created.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Jim Fehlig 1 year, 4 months ago
On 12/13/22 02:31, Daniel P. Berrangé wrote:
> On Fri, Dec 02, 2022 at 05:17:31PM -0700, Jim Fehlig wrote:
>> This is a V1 of my previous RFC to decompose the libvirt-daemon package
>>
>> https://listman.redhat.com/archives/libvir-list/2022-November/235924.html
>>
>> The end goal is to remove the libvirt-dameon dependency on the various
>> libvirt-daemon-driver-foo subpackages, allowing installation of a
>> modular daemon configuration without the traditional monolithic libvirtd.
> 
> snip
> 
>>   libvirt.spec.in | 274 ++++++++++++++++++++++++++++++++----------------
>>   1 file changed, 183 insertions(+), 91 deletions(-)
> 
> Could you also update docs/daemons.rst to mention the new sub-RPMS
> that are getting created.

Currently that file contains no mention of RPM, package, subpackage, etc. But 
poking around I suppose you mean docs/kbase/rpm-deployment.rst. I'll update it 
in V2.

Regards,
Jim
Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Daniel P. Berrangé 1 year, 4 months ago
On Tue, Dec 13, 2022 at 04:14:33PM -0700, Jim Fehlig wrote:
> On 12/13/22 02:31, Daniel P. Berrangé wrote:
> > On Fri, Dec 02, 2022 at 05:17:31PM -0700, Jim Fehlig wrote:
> > > This is a V1 of my previous RFC to decompose the libvirt-daemon package
> > > 
> > > https://listman.redhat.com/archives/libvir-list/2022-November/235924.html
> > > 
> > > The end goal is to remove the libvirt-dameon dependency on the various
> > > libvirt-daemon-driver-foo subpackages, allowing installation of a
> > > modular daemon configuration without the traditional monolithic libvirtd.
> > 
> > snip
> > 
> > >   libvirt.spec.in | 274 ++++++++++++++++++++++++++++++++----------------
> > >   1 file changed, 183 insertions(+), 91 deletions(-)
> > 
> > Could you also update docs/daemons.rst to mention the new sub-RPMS
> > that are getting created.
> 
> Currently that file contains no mention of RPM, package, subpackage, etc.
> But poking around I suppose you mean docs/kbase/rpm-deployment.rst. I'll
> update it in V2.

Sigh, yes, I mean rpm-deployment.rst !


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Andrea Bolognani 1 year, 4 months ago
On Fri, Dec 02, 2022 at 05:17:31PM -0700, Jim Fehlig wrote:
> The libvirt-daemon package still contains the following files, which likely
> need to move somewhere since they are needed by the modular daemons too.
>
> %{_unitdir}/virt-guest-shutdown.target
> I thought of moving this to the libs package, but that would be a change
> for installations with only libvirt-client. AFAICT, it's used by
> libvirt-guests and the qemu and lxc drivers.

IIUC this basically acts as a synchronization point during shutdown:
no guest will be torn down before it has been reached, and the daemon
will not be shut down either. On a default install, this is where
libvirt-guests.service would have a chance to perform the ON_SHUTDOWN
action, but the local admin or management application can replace
that with their own custom implementation.

> %config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
> Another file related to remote access. Should it go to libvirt-libs?

This configures the remote side of the connection.

> %ghost %dir %{_rundir}/libvirt/
> %ghost %dir %{_rundir}/libvirt/common/
> %dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/
> %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/
> %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/
> %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/
> %dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/
> %dir %attr(0755, root, root) %{_libdir}/libvirt/
> %dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/
> These files and directories are needed by the modular daemons as well,
> right? Where should they go? libvirt-daemon-<hypervisor> or
> libvirt-daemon-driver-<hypervisor>?

Server-side, and not specific to any hypervisor.

> %{_datadir}/polkit-1/actions/org.libvirt.unix.policy
> %{_datadir}/polkit-1/actions/org.libvirt.api.policy
> %{_datadir}/polkit-1/rules.d/50-libvirt.rules
> More files related to access. libvirt-libs?

These are for access to a local daemon, not remote access. And again
it's the server configuring what clients should be allowed to connect
to it.


Assuming I've gotten all of the above right :) then it seems to me
that all these files need to go in one of the server-side packages.

I think we should just have a libvirt-daemon-common package that
includes what you currently have put into the libvirt-daemon-client
package plus these files, and have all hypervisor drivers depend on
it directly. Which would basically keep things as they are: right now
installing libvirt-daemon-driver-qemu results in these files begin
present because they're part of the libvirt-daemon package, and after
this change the same would be true except for the monolithic daemon
not coming along for the ride.

-- 
Andrea Bolognani / Red Hat / Virtualization
Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Jim Fehlig 1 year, 4 months ago
On 12/11/22 10:46, Andrea Bolognani wrote:
> On Fri, Dec 02, 2022 at 05:17:31PM -0700, Jim Fehlig wrote:
>> The libvirt-daemon package still contains the following files, which likely
>> need to move somewhere since they are needed by the modular daemons too.
>>
>> %{_unitdir}/virt-guest-shutdown.target
>> I thought of moving this to the libs package, but that would be a change
>> for installations with only libvirt-client. AFAICT, it's used by
>> libvirt-guests and the qemu and lxc drivers.
> 
> IIUC this basically acts as a synchronization point during shutdown:
> no guest will be torn down before it has been reached, and the daemon
> will not be shut down either. On a default install, this is where
> libvirt-guests.service would have a chance to perform the ON_SHUTDOWN
> action, but the local admin or management application can replace
> that with their own custom implementation.
> 
>> %config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
>> Another file related to remote access. Should it go to libvirt-libs?
> 
> This configures the remote side of the connection.
> 
>> %ghost %dir %{_rundir}/libvirt/
>> %ghost %dir %{_rundir}/libvirt/common/
>> %dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/
>> %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/
>> %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/
>> %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/
>> %dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/
>> %dir %attr(0755, root, root) %{_libdir}/libvirt/
>> %dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/
>> These files and directories are needed by the modular daemons as well,
>> right? Where should they go? libvirt-daemon-<hypervisor> or
>> libvirt-daemon-driver-<hypervisor>?
> 
> Server-side, and not specific to any hypervisor.
> 
>> %{_datadir}/polkit-1/actions/org.libvirt.unix.policy
>> %{_datadir}/polkit-1/actions/org.libvirt.api.policy
>> %{_datadir}/polkit-1/rules.d/50-libvirt.rules
>> More files related to access. libvirt-libs?
> 
> These are for access to a local daemon, not remote access. And again
> it's the server configuring what clients should be allowed to connect
> to it.
> 
> 
> Assuming I've gotten all of the above right :) then it seems to me
> that all these files need to go in one of the server-side packages.
> 
> I think we should just have a libvirt-daemon-common package that
> includes what you currently have put into the libvirt-daemon-client
> package plus these files, and have all hypervisor drivers depend on
> it directly.

Taking a cue from the storage driver, I called it libvirt-daemon-core (patches 
4-6) in the original RFC

https://listman.redhat.com/archives/libvir-list/2022-November/235924.html

But I'm fine with libvirt-daemon-common too :-). I'll change it in V2 while 
addressing the other comments.

Regards,
Jim
Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Andrea Bolognani 1 year, 4 months ago
On Mon, Dec 12, 2022 at 03:19:31PM -0700, Jim Fehlig wrote:
> On 12/11/22 10:46, Andrea Bolognani wrote:
> > I think we should just have a libvirt-daemon-common package that
> > includes what you currently have put into the libvirt-daemon-client
> > package plus these files, and have all hypervisor drivers depend on
> > it directly.
>
> Taking a cue from the storage driver, I called it libvirt-daemon-core
> (patches 4-6) in the original RFC
>
> https://listman.redhat.com/archives/libvir-list/2022-November/235924.html
>
> But I'm fine with libvirt-daemon-common too :-). I'll change it in V2 while
> addressing the other comments.

I wasn't unable to find a document that contains a formal policy on
this, but my understanding is that foo-core is a stripped-down
version of foo that only contains the very basic functionality, while
foo-common is stuff needed by foo and doesn't do anything useful on
its own.

Based on this reading, libvirt-daemon-driver-storage-core and
libvirt-daemon-common are the appropriate names for the respective
packages.

Anyone with actual RPM packaging experience, please call me out if
I'm spouting nonsense :)

-- 
Andrea Bolognani / Red Hat / Virtualization
Re: [PATCH 0/7] spec: Decompose the daemon subpackage
Posted by Daniel P. Berrangé 1 year, 4 months ago
On Tue, Dec 13, 2022 at 01:15:26AM -0800, Andrea Bolognani wrote:
> On Mon, Dec 12, 2022 at 03:19:31PM -0700, Jim Fehlig wrote:
> > On 12/11/22 10:46, Andrea Bolognani wrote:
> > > I think we should just have a libvirt-daemon-common package that
> > > includes what you currently have put into the libvirt-daemon-client
> > > package plus these files, and have all hypervisor drivers depend on
> > > it directly.
> >
> > Taking a cue from the storage driver, I called it libvirt-daemon-core
> > (patches 4-6) in the original RFC
> >
> > https://listman.redhat.com/archives/libvir-list/2022-November/235924.html
> >
> > But I'm fine with libvirt-daemon-common too :-). I'll change it in V2 while
> > addressing the other comments.
> 
> I wasn't unable to find a document that contains a formal policy on
> this, but my understanding is that foo-core is a stripped-down
> version of foo that only contains the very basic functionality, while
> foo-common is stuff needed by foo and doesn't do anything useful on
> its own.
> 
> Based on this reading, libvirt-daemon-driver-storage-core and
> libvirt-daemon-common are the appropriate names for the respective
> packages.
> 
> Anyone with actual RPM packaging experience, please call me out if
> I'm spouting nonsense :)

Once you go beyond -devel, -docs and -libs, sub-RPM naming is almost[1]
entirely arbitrary, and at the discretion of the package maintainer 

With regards,
Daniel

[1] caveat: programming language specific guidelines may apply
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|