edb2168 Don't always override the port in import_included_profiles

1 file Authored by rcritten 2 years ago, Committed by frenaud 2 years ago,
    Don't always override the port in import_included_profiles
    
    I can only guess to the original purpose of this override. I
    believe it was because this is called in the installer prior
    to Apache being set up. The expectation was that this would
    only be called locally. It predates the RestClient class.
    
    RestClient will attempt to find an available service. In this
    case, during a CA installation, the local server is not
    considered available because it lacks an entry in
    cn=masters. So it will never be returned as an option.
    
    So by overriding the port to 8443 the remote connection will
    likely fail because we don't require that the port be open.
    
    So instead, instantiate a RestClient and see what happens.
    
    There are several use-cases:
    
    1. Installing an initial server. The RestClient connection
       should fail, so we will fall back to the override port and
       use the local server. If Apache happens to be running with
       a globally-issued certificate then the RestClient will
       succeed. In this case if the connected host and the local
       hostname are the same, override in that case as well.
    
    2. Installing as a replica. In this case the local server should
       be ignored in all cases and a remote CA will be picked with
       no override done.
    
    3. Switching from CA-less to CA-ful. The web server will be
       trusted but the RestClient login will fail with a 404. Fall
       back to the override port in this case.
    
    The motivation for this is trying to install an EL 8.x replica
    against an EL 7.9 server. 8.5+ includes the ACME service and
    a new profile is needed which doesn't exist in 7. This was
    failing because the RestClient determined that the local server
    wasn't running a CA so tried the remote one (7.9) on the override
    port 8443. Since this port isn't open: failure.
    
    Chances are that adding the profile is still going to fail
    because again, 7.9 lacks ACME capabilities, but it will fail in
    a way that allows the installation to continue.
    
    I suspect that all of the overrides can similarly handled, or
    handled directly within the RestClient class, but for the sake
    of "do no harm" I'm only changing this instance for now.
    
    https://pagure.io/freeipa/issue/9100
    
    Signed-off-by: Rob Crittenden <rcritten@redhat.com>
    Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com>