def collect(self):

        results = {}

        neutron_client = NeutronAPIClient(
            username=self.username,
            password=self.password,
            auth_url=self.auth_url,
            project_id=self.project_id,
            region_name=self.region_name,
        )

        result = yield neutron_client.agents()
        results["agents"] = result["agents"]

        result = yield neutron_client.networks()
        results["networks"] = result["networks"]

        result = yield neutron_client.subnets()
        results["subnets"] = result["subnets"]

        result = yield neutron_client.routers()
        results["routers"] = result["routers"]

        result = yield neutron_client.ports()
        results["ports"] = result["ports"]

        result = yield neutron_client.security_groups()
        results["security_groups"] = result["security_groups"]

        result = yield neutron_client.floatingips()
        results["floatingips"] = result["floatingips"]

        returnValue(results)
                for network in dhcp_data["networks"]:
                    _networks.append(network.get("id"))
                    for subnet in network["subnets"]:
                        _subnets.append(subnet)

                _agent["dhcp_agent_subnets"] = _subnets
                _agent["dhcp_agent_networks"] = _networks

        result = yield neutron_client.networks()
        results["networks"] = result["networks"]

        result = yield neutron_client.subnets()
        results["subnets"] = result["subnets"]

        result = yield neutron_client.routers()
        results["routers"] = result["routers"]

        result = yield neutron_client.ports()
        results["ports"] = result["ports"]

        result = yield neutron_client.floatingips()
        results["floatingips"] = result["floatingips"]

        # Do some DNS lookups as well.
        hostnames = set([x["host"] for x in results["services"]])
        hostnames.update([x["host"] for x in results["agents"]])
        hostnames.update(device.zOpenStackExtraHosts)
        hostnames.update(device.zOpenStackNovaApiHosts)
        try:
            hostnames.add(urlparse(results["nova_url"]).hostname)