Получить IP-адрес вычислительных узлов в сети openstack

Я планировал создать службу, которая спит/пробуждает неиспользуемые вычислительные узлы в среде openstack, для чего мне нужен IP-адрес вычислительных узлов. Есть ли какой-либо API или команда для получения IP-адреса (не имени вычислительного узла) машин, присутствующих в сети openstack?


person R45c4l    schedule 02.08.2013    source источник


Ответы (2)


Существует два типа IP-адресов, используемых при настройке облачной среды OpenStack.

  1. Исправлена:

    Доступ только из сети openstack, то есть среди виртуальных машин.

  2. Плавающий:

    К нему можно получить доступ из-за пределов облачной сети OpenStack, в основном он работает на другом интерфейсе, и, как правило, этот IP-адрес общедоступен для доступа к этой виртуальной машине из внешней сети.

Теперь вы это знаете, следуйте приведенному здесь API. http://api.openstack.org/api-ref.html#ext-os-ext-ips

При получении IP-адреса через ответ JSON сначала вы должны проверить, является ли он фиксированным или плавающим.

Это должно ответить на ваш вопрос, я надеюсь. Если нет то пожалуйста сообщите.

person Akshay Patil    schedule 02.08.2013

Вы можете запросить базу данных nova и получить IP-адрес всех вычислительных узлов в таблицах calculate_node. Я написал небольшую функцию на питоне, чтобы сделать это для одного из моих тестов.

def get_compute_nodes(parameters):
    try:
        password = parameters['password']
        db=_mysql.connect(user="root",passwd=password, db="nova")
        query = """select host_ip from compute_nodes where deleted=0"""
        db.query(query)
        r=db.use_result()
        results =  r.fetch_row(maxrows=0)
        return results
    except Exception as exp:
        print "Error in accessing the Nova database"
        print exp
person Ankur Bhatia    schedule 26.10.2016
comment
Привет, есть ли официальный способ, как запросить базу данных? Я имею в виду, что Nova Conductor обрабатывает все запросы к базе данных, и ничего не должно идти напрямую в базу данных, верно? - person RichArt; 15.11.2016
comment
Привет! Нет, к сожалению, нет официального способа, рекомендованного OpenStack для запроса БД. Они предоставили API-интерфейсы, чтобы пользователям не приходилось запрашивать БД. Вы также можете использовать OpenStack Python SDK, но на данный момент метод просто возвращает имя вычисления. Таким образом, метод должен быть изменен по мнению или вы можете написать новый, вызывающий REST API. Для этого вы можете использовать библиотеку httplib в python. Я постараюсь написать и добавить его в качестве ответа. - person Ankur Bhatia; 16.11.2016