Openstack NovaClient: ошибка при запуске экземпляра с использованием servers.create()

Я пытался порождать экземпляр Cirros, используя клиент Python Nova с нижеприведенным вызовом API,

server = nova.servers.create(name = "cirros_vm",
                             image = image.id,
                             flavor = flavor.id )

Я получаю следующую ошибку:

novaclient.exceptions.BadRequest: Multiple possible networks
found, use a Network ID to be more specific. (HTTP 400)
(Request-ID: req-c3aba1d2-23e9-4751-badc-60142286232e)

Это потому, что у меня есть несколько сетей внутри моего арендатора. Справочная документация показывает, что дополнительный nics Аргумент должен быть использован.

 :param nics:  (optional extension) an ordered list of nics to be
                  added to this server, with information about
                  connected networks, fixed ips, port etc.

Но я не могу понять, как передать сетевые идентификаторы в этот API. Когда я даю сетевые идентификаторы в качестве упорядоченного списка,

server = nova.servers.create(name = "api_cir_test",
                             image = image.id,
                             flavor = flavor.id,
                             nics=[ network1.id, network2.id])

Я получаю следующую ошибку:

AttributeError: 'unicode' object has no attribute 'get'

Ниже приведены подробности используемых переменных:

nova is an object of Client in module novaclient.v1_1.client 
image = nova.images.find(name="cirros")
flavor =nova.flavors.find(name="m1.small")
network =nova.networks.find(label="test_net")

1 ответ

Решение

nics Аргумент требует ту же информацию, которую вы предоставили бы на nova boot командная строка... это означает, что она принимает другие вещи, кроме сетевых идентификаторов (например, вы можете передать явные идентификаторы нейтронного порта или предоставить информацию о фиксированных IP-адресах). nics Аргумент нуждается в упорядоченном списке словарей, таких как:

server = nova.servers.create(name = "api_cir_test",
                             image = image.id,
                             flavor = flavor.id,
                             nics=[{'net-id': network1.id},
                                   {'net-id': network2.id}])

Это должно успешно создать ваш сервер.

Другие вопросы по тегам