def purge_orphaned_health_monitor(self, tenant_id=None, monitor_id=None,
                                      hostnames=list()):
        """Purge all monitors that exist on the BIG-IP but not in Neutron"""
        resource_types = [
            resource_helper.BigIPResourceHelper(x) for x in [
                resource_helper.ResourceType.http_monitor,
                resource_helper.ResourceType.https_monitor,
                resource_helper.ResourceType.ping_monitor,
                resource_helper.ResourceType.tcp_monitor]]
        for bigip in self.get_all_bigips():
            if bigip.hostname in hostnames:
                try:
                    monitor_name = self.service_adapter.prefix + monitor_id
                    partition = self.service_adapter.prefix + tenant_id
                    monitor = None
                    for monitor_type in resource_types:
                        try:
                            monitor = monitor_type.load(bigip, monitor_name,
                                                        partition)
                            break
                        except HTTPError as err:
                            if err.response.status_code == 404:
                                continue
                    monitor.delete()
                except TypeError as err:
                    if 'NoneType' in err:
                        LOG.exception("Could not find monitor {}".format(
                                      monitor_name))
                except Exception as exc:
                    LOG.exception('Exception purging monitor %s' % str(exc))