Из кода вашего приложения вы можете найти собственный внешний IP-адрес локального сервера, используя метод, подобный описанному здесь (для C #): https://stackoverflow.com/a/1069113/12484
Затем, получив IP-адрес, вы можете использовать Rackspace Cloud API для запроса списка всех активных серверов и получения информации о сервере с соответствующим IP-адресом. Пример кода (C # с использованием OpenStack.net SDK ):
CloudIdentity cloudIdentity = new CloudIdentity { APIKey = API_KEY, Username = USERNAME };
CloudServersProvider provider = new CloudServersProvider(cloudIdentity);
IEnumerable<Server> servers = provider.ListServersWithDetails(region: REGION);
foreach (Server server in servers)
{
if (server.AccessIPv4 == ipAddress)
{
Console.Out.WriteLine("Server ID:" + server.Id);
Console.Out.WriteLine(" Flavor: " + server.Flavor.Name);
Console.Out.WriteLine(" Image: " + server.Image.Name);
Console.Out.WriteLine(" PowerState: " + server.PowerState.Name);
Console.Out.WriteLine(" Status: " + server.Status.Name);
Console.Out.WriteLine(" UserId: " + server.UserId);
break;
}
}
USERNAME
, API_KEY
и REGION
в вышеприведенном коде должны быть заменены фактическими значениями для вашей учетной записи Rackspace Cloud.