Ejemplo n.º 1
0
    def test_get_ipaddress(self):
        """Testing method or function named get_ip_address."""
        # Test bad addresses
        bad_addresses = [123, 'koala_bear', None, True, False, {}, []]
        for item in bad_addresses:
            result = network.get_ipaddress(item)
            self.assertIsNone(result)

        # Test good addresses
        good_addresses = ['127.0.0.1', '::1', 'localhost', 'www.google.com']
        for item in good_addresses:
            result = network.get_ipaddress(item)
            self.assertTrue(bool(result))
    def add(self, items):
        """Append PollingPoint to the internal self.data list.

        Args:
            items: A PollingPoint object list

        Returns:
            None

        """
        # Ensure there is a list of objects
        if isinstance(items, list) is False:
            items = [items]

        # Only add PollingPoint objects that are not duplicated
        for item in items:
            if isinstance(item, PollingPoint) is True:
                # Ignore invalid values
                if item.valid is False:
                    continue

                # Add data to the list
                if item.checksum not in self._checksums:
                    self.data.append(item)

                # Set object as being.valid
                self.valid = False not in [
                    bool(self.data),
                    bool(network.get_ipaddress(self.target))
                ]
Ejemplo n.º 3
0
    def _get_target_datapoints(self, item):
        """Poll each spoke in parallel.

        Args:
            item: TargetPollingPoints object

        Returns:
            ddv: TargetDataPoints for the SNMPVariable target

        """
        # Intialize data gathering
        ip_target = item.target
        ddv = TargetDataPoints(ip_target)

        # BAC0 only works with IP addresses
        ip_address = network.get_ipaddress(ip_target)
        if bool(ip_address) is False:
            return ddv

        # Get list of type DataPoint
        datapoints = []
        for polltarget in item.data:
            # Get polling results
            value = poll_target_address(ip_address, polltarget.address,
                                        'presentValue', self._bacnet)
            name = poll_target_address(ip_address, polltarget.address,
                                       'objectName', self._bacnet)

            # Skip if invalid data is received
            if value is None:
                continue

            # Do multiplication
            if data.is_numeric(value) is True:
                value = float(value) * polltarget.multiplier
                data_type = DATA_FLOAT
            else:
                data_type = DATA_STRING

            # Update datapoints
            datapoint = DataPoint('analog_value_point_{}'.format(
                polltarget.address),
                                  value,
                                  data_type=data_type)
            datapoint.add(DataPointMetadata('target', ip_target))
            if name is not None:
                datapoint.add(DataPointMetadata('object_name', name))
            datapoints.append(datapoint)

        # Return
        ddv.add(datapoints)
        return ddv