Skip to content

Commit

Permalink
Merge pull request #21 from ACE-IoT-Solutions/add-ethernetip-interface
Browse files Browse the repository at this point in the history
Add ethernetip interface
  • Loading branch information
cmromo authored Aug 22, 2023
2 parents be417c4 + 4a575a5 commit d1db278
Show file tree
Hide file tree
Showing 5 changed files with 529 additions and 91 deletions.
52 changes: 29 additions & 23 deletions services/core/BACnetProxy/bacnet_proxy/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -1049,7 +1049,7 @@ def read_property(self, target_address, object_type, instance_number, property_n
except RuntimeError:
_log.error(f"could not read {property_name} on {object_type}-{instance_number} from device {target_address}")
return None
_log.debug(f"found {bacnet_results} for {property_name} on {object_type}-{instance_number} from device {target_address}")
# _log.debug(f"found {bacnet_results} for {property_name} on {object_type}-{instance_number} from device {target_address}")
return bacnet_results

def _get_access_spec(self, obj_data, properties):
Expand Down Expand Up @@ -1099,28 +1099,32 @@ def find_error_object(self, read_access_list: list, target_address: str, excepti

bacnet_results = {}
for entry in read_access_list:
request = ReadPropertyMultipleRequest(listOfReadAccessSpecs=[entry])
request.pduDestination = Address(target_address)
iocb = self.iocb_class(request)
self.bacnet_application.submit_request(iocb)
try:
bacnet_results.update(iocb.ioResult.get(10))
except Exception as exc:
# _log.error(f"{exc} {target_address=} {request=}")
if "Segmentation not supported" in str(exc) or "segmentationNotSupported" in str(exc):
exc.message = f"failed to scrape: {target_address}/{entry.objectIdentifier[0]}/{entry.objectIdentifier[1]} - segmentationNotSupported"
else:
exc.message = f"failed to scrape: {target_address}/{entry.objectIdentifier[0]}/{entry.objectIdentifier[1]}"
_log.debug(
f"Point failing: {target_address}/{entry.objectIdentifier[0]}/{entry.objectIdentifier[1]} {exc=}"
)
message = {"target_address": target_address,
"object_type": entry.objectIdentifier[0],
"instance_number": entry.objectIdentifier[1],
"exception": f"{exc}"}
self.vip.pubsub.publish(peer="pubsub",
topic="errors/bacnet",
message=message)
for prop in entry.listOfPropertyReferences:
request = ReadPropertyRequest(objectIdentifier=entry.objectIdentifier,
propertyIdentifier=prop.propertyIdentifier,
propertyArrayIndex=prop.propertyArrayIndex
)
request.pduDestination = Address(target_address)
iocb = self.iocb_class(request)
self.bacnet_application.submit_request(iocb)
try:
bacnet_results.update(iocb.ioResult.get(10))
except Exception as exc:
_log.error(f"{exc} {target_address=} {request=}")
if "Segmentation not supported" in str(exc) or "segmentationNotSupported" in str(exc):
exc.message = f"failed to scrape: {target_address}/{entry.objectIdentifier[0]}/{entry.objectIdentifier[1]} - segmentationNotSupported"
else:
exc.message = f"failed to scrape: {target_address}/{entry.objectIdentifier[0]}/{entry.objectIdentifier[1]}"
_log.error(
f"Point failing: {target_address}/{entry.objectIdentifier[0]}/{entry.objectIdentifier[1]} {exc=}"
)
message = {"target_address": target_address,
"object_type": entry.objectIdentifier[0],
"instance_number": entry.objectIdentifier[1],
"exception": f"{exc}"}
self.vip.pubsub.publish(peer="pubsub",
topic="errors/bacnet",
message=message)
return bacnet_results

@RPC.export
Expand Down Expand Up @@ -1171,8 +1175,10 @@ def read_properties(self, target_address, point_map, max_per_request=None, use_r
bacnet_results = iocb.ioResult.get(10)
except RuntimeError as exc:
try:
_log.debug(f"finding error object: {exc}")
bacnet_results = self.find_error_object(read_access_spec_list, target_address, exc)
except PointErrorException as exc_e:
_log.debug(exc_e.message)
if not hasattr(exc, "message"):
_log.warning(f"exception has no message: {exc=}")
# raise exc_e from exc
Expand Down
2 changes: 1 addition & 1 deletion services/core/PlatformDriverAgent/platform_driver/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@

utils.setup_logging()
_log = logging.getLogger(__name__)
__version__ = '4.2.2'
__version__ = '4.2.3'


PROMETHEUS_METRICS_FILE = "/opt/packages/prometheus_exporter/scrape_files/scrape_metrics.prom"
Expand Down
Loading

0 comments on commit d1db278

Please sign in to comment.