Improve error reporting in password utilities
The kolla-genpwd and kolla-mergepwd commands can be used to manipulate
the kolla passwords.yml file. The format is a YAML encoded dict of
password variable names to their values. If the format is not a dict,
the error messages are unhelpful. In particular, this can happen if the
file is encrypted e.g. via Ansible Vault.
For kolla-genpwd:
AttributeError: 'NoneType' object has no attribute 'items'
For kolla-mergepwd:
AttributeError: 'NoneType' object has no attribute 'update'
This change adds a more friendly message.
Change-Id: I27f0835b904e05006ae401adf383090322e1b891
Closes-Bug: #1880220
(cherry picked from commit 620b808cf3
)
This commit is contained in:
parent
3a278e46a9
commit
d8b05f4c1a
@ -59,6 +59,10 @@ def genpwd(passwords_file, length, uuid_keys, ssh_keys, blank_keys,
|
|||||||
with open(passwords_file, 'r') as f:
|
with open(passwords_file, 'r') as f:
|
||||||
passwords = yaml.safe_load(f.read())
|
passwords = yaml.safe_load(f.read())
|
||||||
|
|
||||||
|
if not isinstance(passwords, dict):
|
||||||
|
print("ERROR: Passwords file not in expected key/value format")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
for k, v in passwords.items():
|
for k, v in passwords.items():
|
||||||
if (k in ssh_keys and
|
if (k in ssh_keys and
|
||||||
(v is None
|
(v is None
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import sys
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
@ -23,6 +24,14 @@ def mergepwd(old, new, final):
|
|||||||
with open(new, "r") as new_file:
|
with open(new, "r") as new_file:
|
||||||
new_passwords = yaml.safe_load(new_file)
|
new_passwords = yaml.safe_load(new_file)
|
||||||
|
|
||||||
|
if not isinstance(old_passwords, dict):
|
||||||
|
print("ERROR: Old passwords file not in expected key/value format")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if not isinstance(new_passwords, dict):
|
||||||
|
print("ERROR: New passwords file not in expected key/value format")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
new_passwords.update(old_passwords)
|
new_passwords.update(old_passwords)
|
||||||
|
|
||||||
with open(final, "w") as destination:
|
with open(final, "w") as destination:
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Improves error reporting in ``kolla-genpwd`` and ``kolla-mergepwd`` when
|
||||||
|
input files are not in the expected format. `LP#1880220
|
||||||
|
<https://bugs.launchpad.net/kolla-ansible/+bug/1880220>`__.
|
Loading…
Reference in New Issue
Block a user