aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej Kucia <maciej@kucia.net>2019-02-09 22:27:50 +0100
committerMaciej Kucia <maciej@kucia.net>2019-03-10 21:02:38 +0100
commit89e91b69bde7e6f1242f6f167e77e14d7c30521a (patch)
tree7a71d7230c44ee6df2957e0afc5062a81393afc9
parentf637d139d2d68d3d410bf68c04ed445e983d5e3e (diff)
downloadkolla-ansible-89e91b69bde7e6f1242f6f167e77e14d7c30521a.tar.gz
kolla-ansible-89e91b69bde7e6f1242f6f167e77e14d7c30521a.zip
cmd: Extract methods to allow import from external
When methods for passwords generation and merge are extracted then external apps and scripts can use those methods without resolving to subprocess execution or injecting sys.argv. Change-Id: I99aff7852180534129fa36859075306eea776ba9 Signed-off-by: Maciej Kucia <maciej@kucia.net>
-rwxr-xr-xkolla_ansible/cmd/genpwd.py73
-rwxr-xr-xkolla_ansible/cmd/mergepwd.py23
2 files changed, 53 insertions, 43 deletions
diff --git a/kolla_ansible/cmd/genpwd.py b/kolla_ansible/cmd/genpwd.py
index 366964df7..c4573e999 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 ea3d12877..4c697629a 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()