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)
Example #2
0
    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)
Example #3
0
    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
Example #4
0
    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
Example #5
0
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)
Example #6
0
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)