temporary checkin... before use of validators module
This commit is contained in:
parent
078bca4c01
commit
7b9be0b9d8
@ -1,6 +1,9 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import platform
|
import platform
|
||||||
|
import re
|
||||||
|
import configparser
|
||||||
|
from socket import getaddrinfo
|
||||||
|
|
||||||
def getOS():
|
def getOS():
|
||||||
# Returns one of: SuSE, debian, fedora, redhat, centos, mandrake,
|
# Returns one of: SuSE, debian, fedora, redhat, centos, mandrake,
|
||||||
@ -12,3 +15,61 @@ def getOS():
|
|||||||
def getBits():
|
def getBits():
|
||||||
bits = list(platform.architecture())[0]
|
bits = list(platform.architecture())[0]
|
||||||
return(bits)
|
return(bits)
|
||||||
|
|
||||||
|
def getConfig(conf_file='/etc/bdisk/build.ini'):
|
||||||
|
conf = False
|
||||||
|
# define some defailt conf paths in case we're installed by
|
||||||
|
# a package manager. in order of the paths we should search.
|
||||||
|
default_conf_paths = ['/etc/bdisk/build.ini',
|
||||||
|
'/usr/share/bdisk/build.ini',
|
||||||
|
'/usr/share/bdisk/extra/build.ini',
|
||||||
|
'/usr/share/docs/bdisk/build.ini',
|
||||||
|
'/opt/dev/bdisk/build.ini',
|
||||||
|
'/opt/dev/bdisk/extra/build.ini']
|
||||||
|
# if we weren't given one/using the default...
|
||||||
|
if conf_file == '/etc/bdisk/build.ini':
|
||||||
|
if not os.path.isfile(conf_file):
|
||||||
|
for p in default_conf_paths:
|
||||||
|
if os.path.isfile(p):
|
||||||
|
conf = p
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
conf = conf_file
|
||||||
|
if not conf:
|
||||||
|
# okay, so let's check for distributed/"blank" ini's then since we can't seem to find one.
|
||||||
|
dist_conf_paths = [re.sub('(build\.ini)','dist.\\1', s) for s in default_conf_paths]
|
||||||
|
for q in dist_conf_paths:
|
||||||
|
if os.path.isfile(q):
|
||||||
|
conf = q
|
||||||
|
break
|
||||||
|
return(conf)
|
||||||
|
|
||||||
|
def parseConfig(conf):
|
||||||
|
# The following are paths; c means create, e means must exist, ? means depends on other opts:
|
||||||
|
# build:basedir(e),build:archboot(c),build:isodir(c),build:mountpt(c),
|
||||||
|
# build:srcdir(c),build:tempdir(c),http:path(c?),tftp:path(c?),rsync:path (remote, no op)
|
||||||
|
# The following are files: ipxe:ssl_ca(e?),ipxe:ssl_cakey(e?),ipxe:ssl_crt(e?),ipxe:key(c)
|
||||||
|
# The following are URIs: ipxe:uri
|
||||||
|
# The rest are strings.
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config._interpolation = configparser.ExtendedInterpolation()
|
||||||
|
config.read(conf)
|
||||||
|
config_dict = {s:dict(config.items(s)) for s in config.sections()}
|
||||||
|
# Convert the booleans to pythonic booleans in the dict...
|
||||||
|
config_dict['bdisk']['user'] = config['bdisk'].getboolean('user')
|
||||||
|
conifg_dict['build']['i_am_a_racecar'] = config['build'].getboolean('i_am_a_racecar')
|
||||||
|
conifg_dict['build']['multiarch'] = config['build'].getboolean('multiarch')
|
||||||
|
for i in ('http', 'tftp', 'rsync', 'git'):
|
||||||
|
config_dict['sync'][i] = config['sync'].getboolean(i)
|
||||||
|
config_dict['ipxe']['iso'] = config['ipxe'].getboolean('iso')
|
||||||
|
config_dict['ipxe']['usb'] = config['ipxe'].getboolean('usb')
|
||||||
|
# Validate the rsync host. Works for IP address too. It does NOT
|
||||||
|
# check to see if we can actually *rsync* to it; that'll come later.
|
||||||
|
try:
|
||||||
|
getaddrinfo(config_dict['rsync']['host'], None)
|
||||||
|
except:
|
||||||
|
exit(('ERROR: {0} is not a valid host that can be used for rsyncing.' +
|
||||||
|
'Check your configuration.').format(config_dict['rsync']['host']))
|
||||||
|
# Validate the URI.
|
||||||
|
|
||||||
|
return(config, config_dict)
|
||||||
|
Loading…
Reference in New Issue
Block a user