def test_get_all_dbs_from_config(self, tmp):
        config = (b"[dummy]\n"
                  b"foo = bar\n"
                  b"[db1]\n"
                  b"host = db1\n"
                  b"[db2]\n"
                  b"host = db2\n"
                  b"[db3]\n"
                  b"host = db3\n")

        tmp.write('config', config)
        with patch('cosmicops.config.Path.cwd') as path_cwd_mock:
            path_cwd_mock.return_value = Path(tmp.path)
            self.assertListEqual(['db1', 'db2', 'db3'],
                                 CosmicSQL.get_all_dbs_from_config())
def who_has_this_ip(profile, all_databases, ip_address):
    if all_databases:
        databases = CosmicSQL.get_all_dbs_from_config()
        if not databases:
            raise RuntimeError("No databases found in configuration file")
    else:
        databases = [profile]

    table_headers = [
        "VM", "Network", "MAC address", "IPv4", "Netmask", "Mode", "State",
        "Created"
    ]
    table_data = []

    for database in databases:
        cs = CosmicSQL(server=database, dry_run=False)

        count = 0

        for (network_name, mac_address, ipv4_address, netmask, _, mode, state, created, vm_name) \
                in cs.get_ip_address_data(ip_address):
            count += 1
            table_data.append([
                vm_name, network_name, mac_address, ipv4_address, netmask,
                mode, state, created
            ])

        if count == 0:
            for (vm_name, ipv4_address, created, network_name,
                 state) in cs.get_ip_address_data_bridge(ip_address):
                count += 1
                table_data.append([
                    vm_name, network_name, '-', ipv4_address, '-', '-', state,
                    created
                ])

        if count == 0:
            for (vm_name, _, state, ipv4_address,
                 instance_id) in cs.get_ip_address_data_infra(ip_address):
                table_data.append([
                    f'{vm_name} ({instance_id})', '-', '-', ipv4_address, '-',
                    '-', state, '-'
                ])

    return tabulate(table_data, headers=table_headers, tablefmt='pretty')