2014-01-13 4 views
6

Я пытаюсь запускать экземпляры в настройке opensatck с несколькими сетями, настроенными с помощью python-boto.Запуск Openstack экземпляров с использованием python-boto

Но я получил следующее сообщение об ошибке,

EC2ResponseError: EC2ResponseError: 400 Bad Request <?xml version="1.0"?> <Response><Errors><Error><Code>NetworkAmbiguous</Code><Message>Multiple possible networks found, use a Network ID to be more specific.</Message></Error></Errors><RequestID>req-28b5a4e8-3838-4111-95db-337c5048716d</RequestID></Response>

Мой код, как здесь,

from boto import ec2 
ostack = ec2.connection.EC2Connection(
    ec2_access_key, ec2_secret_key, is_secure=False, port=8773, region='nova', 
    path='/services/Cloud' 
) 

ostack.run_instances('ami-xxxxx', key_name='BotoTest') 

выше работает нормально для одной сети, сконфигурированной для OpenStack.

Примечание: run_instances не имеет аргумента ключевого слова для идентификатора сети.

Где я совершил ошибку или как ее исправить? или это ошибка в python-boto?

Продвижение в благодарность.

+0

Тех же проблема с 'right_aws' рубиновой библиотекой' ec2.launch_instances' ... как вы говорите, что это проблема api – KCD

+0

, но проверьте с последней версией openstack. Обновит вас, как только я проведу проверку. –

ответ

0

Вы пробовали? :

from boto import ec2 
ostack = ec2.connection.EC2Connection(
    ec2_access_key, ec2_secret_key, is_secure=False, port=8773, region='nova', 
    path='/services/Cloud', debug=1 
) 

затем

ostack.run_instances('ami-xxxxx', subnet_id='your network id', key_name='BotoTest') 

Amazon использует это для сетей VPC? Вы используете VPC?

2

Я считаю, что это не ошибка boto, которая была создана для связи с AWS-API. Хотя большинство функциональных возможностей EC2-AWS хорошо работают с API EC2-OpenStack, некоторые функции не реализованы и на них отвечает HTTP-ошибка 500 или 400.

AWS использует VPC (Virtual Private Cloud) как сеть и зона доступности как подсеть. Оба имеют настройку по умолчанию, которая выполняется, если нет дополнительной спецификации при создании нового экземпляра. Но в OpenStack я не вижу возможности пометить сеть и подсеть по умолчанию.

В моих попытках ни private_ip_address, ни subnet_id не работает, чтобы указать сеть/подсеть по адресу run_instances(), если в OpenStack имеется более одного.

Edit: если у вас есть только одна сеть/подсети, следующий код работает отлично с Бота на trystack.org:

import boto 
conn = boto.connect_ec2_endpoint("http://8.21.28.222:8773/services/Cloud",aws_access_key_id='...',aws_secret_access_key='...') 
new_instance = conn.run_instances("ami-00000020", key_name="trystack", security_groups=["default"], instance_type="m1.small") 
+0

Да, ты был прав. Но я пытаюсь его переопределить. Обновите этот вопрос в ближайшее время :-) –

+1

Вы можете проверить [здесь] (https://wiki.openstack.org/wiki/Blueprint-aws-vpc-support#EC2_Instance_API_changes) –

+0

Я обнаружил, что OpenStack EC2 API не фильтрует для vpc/подсеть/сетевые идентификаторы в [run_instances] (https://github.com/openstack/nova/blob/master/nova/api/ec2/cloud.py#L1267) – andpei

Смежные вопросы