Client install roles added
This commit is contained in:
parent
5e8410eac6
commit
990114e28b
47 changed files with 4181 additions and 0 deletions
136
roles/lmn_printer/files/linuxmusterLinuxclient7/config.py
Normal file
136
roles/lmn_printer/files/linuxmusterLinuxclient7/config.py
Normal file
|
@ -0,0 +1,136 @@
|
|||
import configparser, re
|
||||
from linuxmusterLinuxclient7 import logging, constants
|
||||
|
||||
def network():
|
||||
"""
|
||||
Get the network configuration in `/etc/linuxmuster-linuxclient7/network.conf`
|
||||
|
||||
:return: Tuple (success, dict of keys)
|
||||
:rtype: tuple
|
||||
"""
|
||||
rc, rawNetworkConfig = _readNetworkConfig()
|
||||
if not rc:
|
||||
return False, None
|
||||
|
||||
if not _checkNetworkConfigVersion(rawNetworkConfig)[0]:
|
||||
return False, None
|
||||
|
||||
networkConfig = {}
|
||||
|
||||
try:
|
||||
networkConfig["serverHostname"] = rawNetworkConfig["serverHostname"]
|
||||
networkConfig["domain"] = rawNetworkConfig["domain"]
|
||||
networkConfig["realm"] = rawNetworkConfig["realm"]
|
||||
except KeyError as e:
|
||||
logging.error("Error when reading network.conf (2)")
|
||||
logging.exception(e)
|
||||
return False, None
|
||||
|
||||
return True, networkConfig
|
||||
|
||||
def writeNetworkConfig(newNetworkConfig):
|
||||
"""
|
||||
Write the network configuration in `/etc/linuxmuster-linuxclient7/network.conf`
|
||||
|
||||
:param newNetworkConfig: The new config
|
||||
:type newNetworkConfig: dict
|
||||
:return: True or False
|
||||
:rtype: bool
|
||||
"""
|
||||
networkConfig = configparser.ConfigParser(interpolation=None)
|
||||
|
||||
try:
|
||||
networkConfig["network"] = {}
|
||||
networkConfig["network"]["version"] = str(_networkConfigVersion())
|
||||
networkConfig["network"]["serverHostname"] = newNetworkConfig["serverHostname"]
|
||||
networkConfig["network"]["domain"] = newNetworkConfig["domain"]
|
||||
networkConfig["network"]["realm"] = newNetworkConfig["realm"]
|
||||
except Exception as e:
|
||||
logging.error("Error when preprocessing new network configuration!")
|
||||
logging.exception(e)
|
||||
return False
|
||||
|
||||
try:
|
||||
logging.info("Writing new network Configuration")
|
||||
with open(constants.networkConfigFilePath, 'w') as networkConfigFile:
|
||||
networkConfig.write(networkConfigFile)
|
||||
|
||||
except Exception as e:
|
||||
logging.error("Failed!")
|
||||
logging.exception(e)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def upgrade():
|
||||
"""
|
||||
Upgrade the format of the network configuration in `/etc/linuxmuster-linuxclient7/network.conf`
|
||||
This is done automatically on package upgrades.
|
||||
|
||||
:return: True or False
|
||||
:rtype: bool
|
||||
"""
|
||||
return _upgradeNetworkConfig()
|
||||
|
||||
# --------------------
|
||||
# - Helper functions -
|
||||
# --------------------
|
||||
|
||||
def _readNetworkConfig():
|
||||
configParser = configparser.ConfigParser()
|
||||
configParser.read(constants.networkConfigFilePath)
|
||||
try:
|
||||
rawNetworkConfig = configParser["network"]
|
||||
return True, rawNetworkConfig
|
||||
except KeyError as e:
|
||||
logging.error("Error when reading network.conf (1)")
|
||||
logging.exception(e)
|
||||
return False, None
|
||||
return configParser
|
||||
|
||||
def _networkConfigVersion():
|
||||
return 1
|
||||
|
||||
def _checkNetworkConfigVersion(rawNetworkConfig):
|
||||
try:
|
||||
networkConfigVersion = int(rawNetworkConfig["version"])
|
||||
except KeyError as e:
|
||||
logging.warning("The network.conf version could not be identified, assuming 0")
|
||||
networkConfigVersion = 0
|
||||
|
||||
if networkConfigVersion != _networkConfigVersion():
|
||||
logging.warning("The network.conf Version is a mismatch!")
|
||||
return False, networkConfigVersion
|
||||
|
||||
return True, networkConfigVersion
|
||||
|
||||
def _upgradeNetworkConfig():
|
||||
logging.info("Upgrading network config.")
|
||||
rc, rawNetworkConfig = _readNetworkConfig()
|
||||
if not rc:
|
||||
return False
|
||||
|
||||
rc, networkConfigVersion = _checkNetworkConfigVersion(rawNetworkConfig)
|
||||
if rc:
|
||||
logging.info("No need to upgrade, already up-to-date.")
|
||||
return True
|
||||
|
||||
logging.info("Upgrading network config from {0} to {1}".format(networkConfigVersion, _networkConfigVersion()))
|
||||
|
||||
if networkConfigVersion > _networkConfigVersion():
|
||||
logging.error("Cannot upgrade from a newer version to an older one!")
|
||||
return False
|
||||
|
||||
try:
|
||||
if networkConfigVersion == 0:
|
||||
newNetworkConfig = {}
|
||||
newNetworkConfig["serverHostname"] = rawNetworkConfig["serverHostname"] + "." + rawNetworkConfig["domain"]
|
||||
newNetworkConfig["domain"] = rawNetworkConfig["domain"]
|
||||
newNetworkConfig["realm"] = rawNetworkConfig["domain"].upper()
|
||||
return writeNetworkConfig(newNetworkConfig)
|
||||
except Exception as e:
|
||||
logging.error("Error when upgrading network config!")
|
||||
logging.exception(e)
|
||||
return False
|
||||
|
||||
return True
|
Loading…
Add table
Add a link
Reference in a new issue