diff --git a/kolla_ansible/cmd/genpwd.py b/kolla_ansible/cmd/genpwd.py index 366964df7b1836b08e70e0648b026fd8c4df1147..c4573e999dc3467c309adf20bd8ddecbfd8941fe 100755 --- a/kolla_ansible/cmd/genpwd.py +++ b/kolla_ansible/cmd/genpwd.py @@ -54,6 +54,44 @@ def generate_RSA(bits=4096): return private_key, public_key +def genpwd(passwords_file, length, uuid_keys, ssh_keys, blank_keys, + fernet_keys, hmac_md5_keys): + with open(passwords_file, 'r') as f: + passwords = yaml.safe_load(f.read()) + + for k, v in passwords.items(): + if (k in ssh_keys and + (v is None + or v.get('public_key') is None + and v.get('private_key') is None)): + private_key, public_key = generate_RSA() + passwords[k] = { + 'private_key': private_key, + 'public_key': public_key + } + continue + if v is None: + if k in blank_keys and v is None: + continue + if k in uuid_keys: + passwords[k] = uuidutils.generate_uuid() + elif k in hmac_md5_keys: + passwords[k] = (hmac.new( + uuidutils.generate_uuid().encode(), ''.encode(), md5) + .hexdigest()) + elif k in fernet_keys: + passwords[k] = fernet.Fernet.generate_key() + else: + passwords[k] = ''.join([ + random.SystemRandom().choice( + string.ascii_letters + string.digits) + for n in range(length) + ]) + + with open(passwords_file, 'w') as f: + f.write(yaml.safe_dump(passwords, default_flow_style=False)) + + def main(): parser = argparse.ArgumentParser() parser.add_argument( @@ -91,40 +129,9 @@ def main(): # length of password length = 40 - with open(passwords_file, 'r') as f: - passwords = yaml.safe_load(f.read()) - - for k, v in passwords.items(): - if (k in ssh_keys and - (v is None - or v.get('public_key') is None - and v.get('private_key') is None)): - private_key, public_key = generate_RSA() - passwords[k] = { - 'private_key': private_key, - 'public_key': public_key - } - continue - if v is None: - if k in blank_keys and v is None: - continue - if k in uuid_keys: - passwords[k] = uuidutils.generate_uuid() - elif k in hmac_md5_keys: - passwords[k] = (hmac.new( - uuidutils.generate_uuid().encode(), ''.encode(), md5) - .hexdigest()) - elif k in fernet_keys: - passwords[k] = fernet.Fernet.generate_key() - else: - passwords[k] = ''.join([ - random.SystemRandom().choice( - string.ascii_letters + string.digits) - for n in range(length) - ]) + genpwd(passwords_file, length, uuid_keys, ssh_keys, blank_keys, + fernet_keys, hmac_md5_keys) - with open(passwords_file, 'w') as f: - f.write(yaml.safe_dump(passwords, default_flow_style=False)) if __name__ == '__main__': main() diff --git a/kolla_ansible/cmd/mergepwd.py b/kolla_ansible/cmd/mergepwd.py index ea3d128772e75910487ebe877311173ecdce4cb4..4c697629a0264347f582afbd134c057b3273206d 100755 --- a/kolla_ansible/cmd/mergepwd.py +++ b/kolla_ansible/cmd/mergepwd.py @@ -16,24 +16,27 @@ import argparse import yaml -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("--old", help="old password file", required=True) - parser.add_argument("--new", help="new password file", required=True) - parser.add_argument("--final", help="merged password file", required=True) - args = parser.parse_args() - - with open(args.old, "r") as old_file: +def mergepwd(old, new, final): + with open(old, "r") as old_file: old_passwords = yaml.safe_load(old_file) - with open(args.new, "r") as new_file: + with open(new, "r") as new_file: new_passwords = yaml.safe_load(new_file) new_passwords.update(old_passwords) - with open(args.final, "w") as destination: + with open(final, "w") as destination: yaml.safe_dump(new_passwords, destination, default_flow_style=False) +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--old", help="old password file", required=True) + parser.add_argument("--new", help="new password file", required=True) + parser.add_argument("--final", help="merged password file", required=True) + args = parser.parse_args() + mergepwd(args.old, args.new, args.final) + + if __name__ == '__main__': main()