Использовать API для добавления сети к внешнему провайдеру
Я использую ovirtskd4 в Python с oVirt Engine версии 4.1.2.2-1.el7.centos. Я пытаюсь создать новую сеть на провайдере сети Openstack. Если я использую графический интерфейс веб-страницы, я могу просто нажать "Экспорт" и выбрать провайдера из выпадающего списка.
Точно так же, если я использую API и делаю
conn.system_service().openstack_network_providers_service().list()
Я вижу OpenStackNetworkProvider
экземпляр я хочу. Я не могу найти путь ни к openstack_networks_service
это имеет add
метод или способ добавить external
или же provider
поле к Network
Объект для создания внешней сети.
Как правильно использовать API для создания сети с использованием внешнего поставщика?
1 ответ
Хотя я не нашел хорошего решения для использования API напрямую для всего этого, я все же нашел решение. Сначала я напрямую связываюсь с сервером Neutron, чтобы создать сеть, затем возвращаюсь к ovirt sdk, чтобы перенести эту сеть в центр обработки данных / кластер, который я хочу:
net_name = 'test_network'
data_center = 'Default'
net_dict = {'name': net_name} # add other parameters as desired
onps = conn.system_service().openstack_network_providers_service()
provider = onps.list()[0]
# get the URL of the provider, though in this case it might be "localhost" so swap that out for the host in the Connection url
url = "%s/v2.0/networks" % \
(provider.url.replace('localhost', conn.url.split('/')[2]),)
req = urllib2.Request(url)
req.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(req, json.dumps({'network': net_dict}))
# now find that one
os_net_serv = onps.provider_service(provider.id).networks_service()
for os_net in os_net_serv.list():
if os_net.name == net_name:
net_serv = os_net_serv.network_service(os_net.id)
net_serv.import_(data_center=ovirtsdk4.types.DataCenter(name=data_center))
# now I can get it as an oVirt Network
net = conn.system_service().networks_service().list(
search='name=%s' % (net_name,))[0]