The bootstrap logic doesn't take into consideration multiple roles
with the same name. If bootstrap is unable to determine which role to
use and accidentally uses a domain-specific role with the same name
as a default role, bootstrap will fail in unexpected ways.
This change deviates slightly from the upstream patches in that the
stable/queens test_cli.py module doesn't have a `self.bootstrap`
attribute. Instead, we just test with `bootstrap` in the test itself.
Otherwise, the test is functionally the same.
Bootstrap code used to live in keystone/cmd/cli.py before it was
refactored into its own module, keystone/cmd/bootstrap.py. This
caused a conflict during backport where the file patched in later
releases because the file didn't exist. Instead, a functionally
equivalent change was proposed to keystone/cmd/cli.py.
(cherry picked from commit 25cf359e5fb914b855922121f20e23bd14626b8e)
(cherry picked from commit 51ff7be731450c183b3e3eb6d34493e986cc2635)
(cherry picked from commit 1ba238e49195890c0232554005d4efa670467694)
(cherry picked from commit 2e4055e49b519a146902f0cf06740ec43231929b)