Skip to content

Commit

Permalink
added handling for non-standard desigo point name strings and increas…
Browse files Browse the repository at this point in the history
…ed scrape timeout
  • Loading branch information
cmromo committed Apr 9, 2024
1 parent 6b1b63d commit 678c061
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 9 deletions.
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.3.3'
__version__ = '4.3.4'


PROMETHEUS_METRICS_FILE = "/opt/packages/prometheus_exporter/scrape_files/scrape_metrics.prom"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ def get_resource(self, resource="eventcounters", parameters=None):
f"{self.url}/{resource}",
headers={"authorization": f"Bearer {self.auth_token}"},
verify=False,
timeout=300,
timeout=800,
)
after_request = datetime.utcnow()
_log.debug(f"got resource in {after_request-before_request}")
Expand Down Expand Up @@ -285,13 +285,27 @@ def _scrape_all(self):
prop_values = {}
for designation, registers in self.designation_map.items():
_log.debug(f"scraping {designation}")
device_props = self.get_resource(f"propertyvalues/{designation}", {"readAllProperties": True})
_log.debug(f"{device_props=}")
for register in registers:
api_values[register.property_name] = [x for x in device_props["Properties"] if x["PropertyName"] == register.property_name]
for prop in device_props["Properties"]:
if prop["PropertyName"] == register.property_name:
api_values[register.property_name] = prop["Value"]["Value"]
# check if point has property in designation
if self.has_property_in_designation(designation):
# read just the one property
for register in registers:
properties_response = self.get_resource(
f"propertyvalues/{designation}", {"readAllProperties": True}
)
try:
value = properties_response.get('Properties', [{}])[0].get('Value', {})['Value']
except IndexError:
_log.warning(f"could not scrape value property {designation}")
continue
api_values[register.property_name] = value

else:
device_props = self.get_resource(f"propertyvalues/{designation}", {"readAllProperties": True})
for register in registers:
api_values[register.property_name] = [x for x in device_props["Properties"] if x["PropertyName"] == register.property_name]
for prop in device_props["Properties"]:
if prop["PropertyName"] == register.property_name:
api_values[register.property_name] = prop["Value"]["Value"]


# prop_values = self.parse_to_forwarder(prop_values)
Expand Down Expand Up @@ -361,3 +375,10 @@ def normalize_topic_names(self, data):
}
)
return normalized_data

def has_property_in_designation(self, designation):
props = designation.split(".")
if props[5] == "Points":
return True
else:
return False

0 comments on commit 678c061

Please sign in to comment.