8badce2 Refactor backup_and_replace_hostname() into a flexible config modification tool

2 files Authored by abbra 12 years ago, Committed by rcritten 12 years ago,
    Refactor backup_and_replace_hostname() into a flexible config modification tool
    
    backup_and_replace_hostname() was doing three things:
        1. Given config file in 'key=value' style, replace value for a
           specified key (HOSTNAME)
        2. Backup original file and install a replacement
        3. Restore original security context after editing
    
    We have several more places where parts of the functionality are needed,
    thus making two tools in ipapython.ipautil:
    
        1. config_replace_variables(filepath, replacevars=dict(),
                                    appendvars=dict())
           Replaces or appends values to specified keys, adding new key=value
           pairs if key was absent
    
        2. backup_config_and_replace_variables(fstore, filepath,
                                               replacevars=dict(),
                                               appendvars=dict())
           Backups config file and calls config_replace_variables()
    
    A caller must handle security context after using these two tools.
    
    In addition, as before, there is
    ipapython.services.backup_and_replace_hostname() that uses
    these common tools and restores security context after editing.
    
    The code will be used extensively for systemd integration for Fedora 16.
    
    Fixes:
        https://fedorahosted.org/freeipa/ticket/1871
    
        
file modified
+90 -0
file modified
+7 -40