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}])
Это должно успешно создать ваш сервер.