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')