def test_password(self): chars = string.letters + string.digits cases = [('10', 10), (None, 24), ('test', 24)] for arg, length in cases: result = pwgen.password(arg) for char in result: self.assertIn(char, chars) self.assertEqual(len(result), length)
def test_password(self): chars = string.letters + string.digits cases = [ ('10', 10), (None, 24), ('test', 24) ] for arg, length in cases: result = pwgen.password(arg) for char in result: self.assertIn(char, chars) self.assertEqual(len(result), length)
def __init__(self, parent): self.name = "Service Passwords" self.priority = 99 self.visible = False self.parent = parent #UI text self.header_content = ["Set service passwords", ""] self.defaults = \ { "astute/user": {"label": "Astute user", "tooltip": "", "value": "naily"}, "astute/password": {"label": "Astute password", "tooltip": "", "value": pwgen.password()}, "cobbler/user": {"label": "Cobbler user", "tooltip": "", "value": "cobbler"}, "cobbler/password": {"label": "Cobbler password", "tooltip": "", "value": pwgen.password()}, "keystone/admin_token": {"label": "Keystone Admin Token", "tooltip": "", "value": pwgen.password()}, "keystone/nailgun_user": { "label": "Keystone username for Nailgun", "tooltip": "", "value": "nailgun"}, "keystone/nailgun_password": { "label": "Keystone password for Nailgun", "tooltip": "", "value": pwgen.password()}, "keystone/ostf_user": { "label": "Keystone username for OSTF", "tooltip": "", "value": "ostf"}, "keystone/ostf_password": { "label": "Keystone password for OSTF", "tooltip": "", "value": pwgen.password()}, "mcollective/user": {"label": "Mcollective user", "tooltip": "", "value": "mcollective"}, "mcollective/password": {"label": "Mcollective password", "tooltip": "", "value": pwgen.password()}, "postgres/keystone_dbname": {"label": "Keystone DB name", "tooltip": "", "value": "keystone"}, "postgres/keystone_user": {"label": "Keystone DB user", "tooltip": "", "value": "keystone"}, "postgres/keystone_password": {"label": "Keystone DB password", "tooltip": "", "value": pwgen.password()}, "postgres/nailgun_dbname": {"label": "Nailgun DB name", "tooltip": "", "value": "nailgun"}, "postgres/nailgun_user": {"label": "Nailgun DB user", "tooltip": "", "value": "nailgun"}, "postgres/nailgun_password": {"label": "Nailgun DB password", "tooltip": "", "value": pwgen.password()}, "postgres/ostf_dbname": {"label": "OSTF DB name", "tooltip": "", "value": "ostf"}, "postgres/ostf_user": {"label": "OSTF DB user", "tooltip": "", "value": "ostf"}, "postgres/ostf_password": {"label": "OSTF DB password", "tooltip": "", "value": pwgen.password()}, } self.fields = self.defaults.keys() self.oldsettings = self.load() self.screen = None
def save_only(iface, settingsfile=consts.SETTINGS_FILE): from fuelmenu.common import pwgen import netifaces if utils.is_post_deployment(): print("Not updating settings when invoked during post-deployment.\n" "Run fuelmenu manually to make changes.") sys.exit(0) # Calculate and set Static/DHCP pool fields # Max IPs = net size - 2 (master node + bcast) try: ip = netifaces.ifaddresses(iface)[netifaces.AF_INET][0]['addr'] netmask = netifaces.ifaddresses(iface)[netifaces.AF_INET][0]['netmask'] mac = netifaces.ifaddresses(iface)[netifaces.AF_LINK][0]['addr'] except Exception: print("Interface %s is missing either IP address or netmask" % (iface)) sys.exit(1) net_ip_list = network.getNetwork(ip, netmask) try: dhcp_pool = net_ip_list[1:] dynamic_start = str(dhcp_pool[0]) dynamic_end = str(dhcp_pool[-1]) except Exception: print("Unable to define DHCP pools") sys.exit(1) try: hostname, sep, domain = os.uname()[1].partition('.') except Exception: print("Unable to calculate hostname and domain") sys.exit(1) try: dhcptimeout = 5 dhcp_server_data = network.search_external_dhcp(iface, dhcptimeout) except errors.NetworkException: log.error("DHCP scan failed") dhcp_server_data = [] num_dhcp = len(dhcp_server_data) if num_dhcp == 0: log.debug("No DHCP servers found") else: # Problem exists, but permit user to continue log.error("%s foreign DHCP server(s) found: %s" % (num_dhcp, dhcp_server_data)) print("ERROR: %s foreign DHCP server(s) found: %s" % (num_dhcp, dhcp_server_data)) if network.duplicateIPExists(ip, iface): log.error("Duplicate host found with IP {0}".format(ip)) print("ERROR: Duplicate host found with IP {0}".format(ip)) default_settings_file = os.path.join(os.path.dirname(__file__), "settings.yaml") mos_version = utils.get_fuel_version() settings = settings_module.Settings() settings.load( default_settings_file, template_kwargs={"mos_version": mos_version}) settings.load(settingsfile, template_kwargs={"mos_version": mos_version}) settings_upd = \ { "ADMIN_NETWORK/interface": iface, "ADMIN_NETWORK/ipaddress": ip, "ADMIN_NETWORK/netmask": netmask, "ADMIN_NETWORK/mac": mac, "ADMIN_NETWORK/dhcp_pool_start": dynamic_start, "ADMIN_NETWORK/dhcp_pool_end": dynamic_end, "ADMIN_NETWORK/dhcp_gateway": ip, "HOSTNAME": hostname, "DNS_DOMAIN": domain, "DNS_SEARCH": domain, "astute/user": "******", "astute/password": pwgen.password(), "cobbler/user": "******", "cobbler/password": pwgen.password(), "keystone/admin_token": pwgen.password(), "keystone/ostf_user": "******", "keystone/ostf_password": pwgen.password(), "keystone/nailgun_user": "******", "keystone/nailgun_password": pwgen.password(), "keystone/monitord_user": "******", "keystone/monitord_password": pwgen.password(), "mcollective/user": "******", "mcollective/password": pwgen.password(), "postgres/keystone_dbname": "keystone", "postgres/keystone_user": "******", "postgres/keystone_password": pwgen.password(), "postgres/nailgun_dbname": "nailgun", "postgres/nailgun_user": "******", "postgres/nailgun_password": pwgen.password(), "postgres/ostf_dbname": "ostf", "postgres/ostf_user": "******", "postgres/ostf_password": pwgen.password(), "FUEL_ACCESS/user": "******", "FUEL_ACCESS/password": "******", } for setting in settings_upd.keys(): if "/" in setting: part1, part2 = setting.split("/") settings.setdefault(part1, {}) # Keep old values for passwords if already set if "password" in setting: settings[part1].setdefault(part2, settings_upd[setting]) else: settings[part1][part2] = settings_upd[setting] else: if "password" in setting: settings.setdefault(setting, settings_upd[setting]) else: settings[setting] = settings_upd[setting] # Write astute.yaml settings.write(outfn=settingsfile)
def save_only(iface, settingsfile=consts.SETTINGS_FILE): from fuelmenu.common import pwgen import netifaces if utils.is_post_deployment(): print("Not updating settings when invoked during post-deployment.\n" "Run fuelmenu manually to make changes.") sys.exit(0) # Calculate and set Static/DHCP pool fields # Max IPs = net size - 2 (master node + bcast) try: ip = netifaces.ifaddresses(iface)[netifaces.AF_INET][0]['addr'] netmask = netifaces.ifaddresses(iface)[netifaces.AF_INET][0]['netmask'] mac = netifaces.ifaddresses(iface)[netifaces.AF_LINK][0]['addr'] except Exception: print("Interface %s is missing either IP address or netmask" % (iface)) sys.exit(1) net_ip_list = network.getNetwork(ip, netmask) try: dhcp_pool = net_ip_list[1:] dynamic_start = str(dhcp_pool[0]) dynamic_end = str(dhcp_pool[-1]) except Exception: print("Unable to define DHCP pools") sys.exit(1) try: hostname, sep, domain = os.uname()[1].partition('.') except Exception: print("Unable to calculate hostname and domain") sys.exit(1) try: dhcptimeout = 5 dhcp_server_data = network.search_external_dhcp(iface, dhcptimeout) except errors.NetworkException: log.error("DHCP scan failed") dhcp_server_data = [] num_dhcp = len(dhcp_server_data) if num_dhcp == 0: log.debug("No DHCP servers found") else: # Problem exists, but permit user to continue log.error("%s foreign DHCP server(s) found: %s" % (num_dhcp, dhcp_server_data)) print("ERROR: %s foreign DHCP server(s) found: %s" % (num_dhcp, dhcp_server_data)) if network.duplicateIPExists(ip, iface): log.error("Duplicate host found with IP {0}".format(ip)) print("ERROR: Duplicate host found with IP {0}".format(ip)) default_settings_file = os.path.join(os.path.dirname(__file__), "settings.yaml") mos_version = utils.get_fuel_version() settings = settings_module.Settings() settings.load( default_settings_file, template_kwargs={"mos_version": mos_version}) settings.load(settingsfile, template_kwargs={"mos_version": mos_version}) settings_upd = \ { "ADMIN_NETWORK/interface": iface, "ADMIN_NETWORK/ipaddress": ip, "ADMIN_NETWORK/netmask": netmask, "ADMIN_NETWORK/mac": mac, "ADMIN_NETWORK/dhcp_pool_start": dynamic_start, "ADMIN_NETWORK/dhcp_pool_end": dynamic_end, "ADMIN_NETWORK/dhcp_gateway": ip, "ADMIN_NETWORK/ssh_network": network.getCidr(ip, netmask), "HOSTNAME": hostname, "DNS_DOMAIN": domain, "DNS_SEARCH": domain, "astute/user": "******", "astute/password": pwgen.password(), "cobbler/user": "******", "cobbler/password": pwgen.password(), "keystone/admin_token": pwgen.password(), "keystone/ostf_user": "******", "keystone/ostf_password": pwgen.password(), "keystone/nailgun_user": "******", "keystone/nailgun_password": pwgen.password(), "keystone/monitord_user": "******", "keystone/monitord_password": pwgen.password(), "mcollective/user": "******", "mcollective/password": pwgen.password(), "postgres/keystone_dbname": "keystone", "postgres/keystone_user": "******", "postgres/keystone_password": pwgen.password(), "postgres/nailgun_dbname": "nailgun", "postgres/nailgun_user": "******", "postgres/nailgun_password": pwgen.password(), "postgres/ostf_dbname": "ostf", "postgres/ostf_user": "******", "postgres/ostf_password": pwgen.password(), "FUEL_ACCESS/user": "******", "FUEL_ACCESS/password": "******", } for setting in settings_upd.keys(): if "/" in setting: part1, part2 = setting.split("/") settings.setdefault(part1, {}) # Keep old values for passwords if already set if "password" in setting: settings[part1].setdefault(part2, settings_upd[setting]) else: settings[part1][part2] = settings_upd[setting] else: if "password" in setting: settings.setdefault(setting, settings_upd[setting]) else: settings[setting] = settings_upd[setting] # Write astute.yaml settings.write(outfn=settingsfile)