Bugfix on missing piCtory config, cleanup

This commit is contained in:
2020-05-16 11:55:14 +02:00
parent 724d785a12
commit e7c6899101
8 changed files with 33 additions and 18 deletions

View File

@@ -1,3 +1,4 @@
# XML-RPC Access Control List (acl) # XML-RPC Access Control List (acl)
# One entry per Line IPADRESS,LEVEL # One entry per Line IPADRESS,LEVEL
# #
127.0.0.1,4

View File

@@ -131,6 +131,10 @@ def get_revpiled_address(configrsc_bytes):
except Exception: except Exception:
return -1 return -1
# Check the result does match
if not type(rsc) == dict:
return -1
byte_address = -1 byte_address = -1
for device in rsc.get("Devices", ()): # type: dict for device in rsc.get("Devices", ()): # type: dict
if device.get("type", "") == "BASE": if device.get("type", "") == "BASE":

View File

@@ -162,10 +162,11 @@ class MqttServer(Thread):
"defaults now | {0}".format(e) "defaults now | {0}".format(e)
) )
except Exception: except Exception as e:
self._rpi = None self._rpi = None
proginit.logger.error( proginit.logger.error(
"piCtory configuration not loadable for MQTT" "piCtory configuration not loadable for MQTT | "
"{0}".format(e)
) )
raise e raise e

View File

@@ -452,11 +452,11 @@ class RevPiSlaveDev(Thread):
elif cmd == b'RP': elif cmd == b'RP':
# Replace_IOs Konfiguration senden, wenn hash existiert # Replace_IOs Konfiguration senden, wenn hash existiert
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
proginit.logger.debug( proginit.logger.debug(
"transfair replace_io configuration: {0}" "transfair replace_io configuration: {0}"
"".format(proginit.pargs.configrsc) "".format(replace_ios)
) )
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
if HASH_RPIO != HASH_NULL and replace_ios: if HASH_RPIO != HASH_NULL and replace_ios:
try: try:
with open(replace_ios, "rb") as fh: with open(replace_ios, "rb") as fh:

View File

@@ -126,10 +126,11 @@ class ProcimgServer():
"replace_ios_file not loadable for ProcimgServer - using " "replace_ios_file not loadable for ProcimgServer - using "
"defaults now | {0}".format(e) "defaults now | {0}".format(e)
) )
except Exception: except Exception as e:
self.rpi = None self.rpi = None
proginit.logger.error( proginit.logger.error(
"piCtory configuration not loadable for ProcimgServer" "piCtory configuration not loadable for ProcimgServer | "
"{0}".format(e)
) )
return e return e

View File

@@ -28,7 +28,7 @@ begrenzt werden!
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2020 Sven Sager" __copyright__ = "Copyright (C) 2020 Sven Sager"
__license__ = "GPLv3" __license__ = "GPLv3"
__version__ = "0.8.5" __version__ = "0.9.0"
import gzip import gzip
import os import os
@@ -53,7 +53,7 @@ from shared.ipaclmanager import IpAclManager
from watchdogs import ResetDriverWatchdog from watchdogs import ResetDriverWatchdog
from xrpcserver import SaveXMLRPCServer from xrpcserver import SaveXMLRPCServer
min_revpimodio = "2.4.5" min_revpimodio = "2.5.0"
class RevPiPyLoad(): class RevPiPyLoad():
@@ -634,15 +634,23 @@ class RevPiPyLoad():
def check_pictory_changed(self): def check_pictory_changed(self):
"""Prueft ob sich die piCtory Datei veraendert hat. """Prueft ob sich die piCtory Datei veraendert hat.
@return True, wenn veraendert wurde""" @return True, wenn veraendert wurde"""
try:
mtime = os.path.getmtime(proginit.pargs.configrsc) mtime = os.path.getmtime(proginit.pargs.configrsc)
except FileNotFoundError:
self.pictorymtime = 0
return False
if self.pictorymtime == mtime: if self.pictorymtime == mtime:
return False return False
self.pictorymtime = mtime self.pictorymtime = mtime
# TODO: Nur "Devices" list vergleich da HASH immer neu wegen timestamp # TODO: Nur "Devices" list vergleich da HASH immer neu wegen timestamp
try:
with open(proginit.pargs.configrsc, "rb") as fh: with open(proginit.pargs.configrsc, "rb") as fh:
rsc_buff = fh.read() rsc_buff = fh.read()
except Exception:
return False
# Check change of RevPiLED address # Check change of RevPiLED address
self.revpi_led_address = get_revpiled_address(rsc_buff) self.revpi_led_address = get_revpiled_address(rsc_buff)
@@ -675,7 +683,7 @@ class RevPiPyLoad():
if not self.replaceiofail: if not self.replaceiofail:
proginit.logger.error( proginit.logger.error(
"can not access (r/w) the replace_ios file '{0}' " "can not access the replace_ios file '{0}' "
"using defaults".format(self.replace_ios_config) "using defaults".format(self.replace_ios_config)
) )
self.replaceiofail = True self.replaceiofail = True
@@ -737,7 +745,7 @@ class RevPiPyLoad():
fh_pack.write( fh_pack.write(
os.path.join(tup_dir[0], file), arcname=arcname os.path.join(tup_dir[0], file), arcname=arcname
) )
if pictory: if pictory and os.access(proginit.pargs.configrsc, os.R_OK):
fh_pack.write( fh_pack.write(
proginit.pargs.configrsc, arcname="config.rsc" proginit.pargs.configrsc, arcname="config.rsc"
) )
@@ -751,7 +759,7 @@ class RevPiPyLoad():
name=filename, mode="w:gz", dereference=True) name=filename, mode="w:gz", dereference=True)
try: try:
fh_pack.add(".", arcname=os.path.basename(self.plcworkdir)) fh_pack.add(".", arcname=os.path.basename(self.plcworkdir))
if pictory: if pictory and os.access(proginit.pargs.configrsc, os.R_OK):
fh_pack.add(proginit.pargs.configrsc, arcname="config.rsc") fh_pack.add(proginit.pargs.configrsc, arcname="config.rsc")
except Exception: except Exception:
filename = "" filename = ""
@@ -943,7 +951,7 @@ class RevPiPyLoad():
dc["autoreloaddelay"] = self.autoreloaddelay dc["autoreloaddelay"] = self.autoreloaddelay
dc["autostart"] = int(self.autostart) dc["autostart"] = int(self.autostart)
dc["plcworkdir"] = self.plcworkdir dc["plcworkdir"] = self.plcworkdir
dc["plcworkdir_set_uid"] = self.plcworkdir_set_uid dc["plcworkdir_set_uid"] = int(self.plcworkdir_set_uid)
dc["plcprogram"] = self.plcprogram dc["plcprogram"] = self.plcprogram
dc["plcprogram_watchdog"] = self.plcprogram_watchdog dc["plcprogram_watchdog"] = self.plcprogram_watchdog
dc["plcarguments"] = self.plcarguments dc["plcarguments"] = self.plcarguments

View File

@@ -27,11 +27,11 @@ setup(
license="LGPLv3", license="LGPLv3",
name="revpipyload", name="revpipyload",
version="0.8.5d", version="0.9.0",
scripts=["data/revpipyload"], scripts=["data/revpipyload"],
install_requires=["revpimodio2 >= 2.4.5"], install_requires=["revpimodio2 >= 2.5.0"],
python_requires=">=3.2", python_requires=">=3.2",
data_files=[ data_files=[

View File

@@ -1,5 +1,5 @@
[DEFAULT] [DEFAULT]
Debian-Version: 1 Debian-Version: 1
Depends3: python3-revpimodio2 (>= 2.4.5) Depends3: python3-revpimodio2 (>= 2.5.0)
Package: revpipyload Package: revpipyload
Suite: stable Suite: stable