• M
    systemd: Modernize machine naming · c3bd0019
    Martin Kletzander 提交于
    So, systemd-machined has this philosophy that machine names are like
    hostnames and hence should follow the same rules.  But we always allowed
    international characters in domain names.  Thus we need to modify the
    machine name we are passing to systemd.
    
    In order to change some machine names that we will be passing to systemd,
    we also need to call TerminateMachine at the end of a lifetime of a
    domain.  Even for domains that were started with older libvirt.  That
    can be achieved thanks to virSystemdGetMachineNameByPID().  And because
    we can change machine names, we can get rid of the inconsistent and
    pointless escaping of domain names when creating machine names.
    
    So this patch modifies the naming in the following way.  It creates the
    name as <drivername>-<id>-<name> where invalid hostname characters are
    stripped out of the name and if the resulting name is longer, it
    truncates it to 64 characters.  That way we can start domains we
    couldn't start before.  Well, at least on systemd.
    
    To make it work all together, the machineName (which is needed only with
    systemd) is saved in domain's private data.  That way the generation is
    moved to the driver and we don't need to pass various unnecessary
    arguments to cgroup functions.
    
    The only thing this complicates a bit is the scope generation when
    validating a cgroup where we must check both old and new naming, so a
    slight modification was needed there.
    
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1282846Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
    c3bd0019
virsystemd.c 16.0 KB