Python 使用API将网络添加到外部提供程序

Python 使用API将网络添加到外部提供程序,python,ovirt,Python,Ovirt,我正在使用python中的ovirtskd4和oVirt引擎版本4.1.2.2-1.el7.centos。我正在尝试在Openstack网络提供商上创建一个新网络。如果我使用网页GUI,我只需单击“导出”并从下拉列表中选择提供者 类似地,如果我使用api并 conn.system_service().openstack_network_providers_service().list() 我看到了我想要的OpenStackNetworkProvider实例。我似乎找不到具有add方法的open

我正在使用python中的ovirtskd4和oVirt引擎版本4.1.2.2-1.el7.centos。我正在尝试在Openstack网络提供商上创建一个新网络。如果我使用网页GUI,我只需单击“导出”并从下拉列表中选择提供者

类似地,如果我使用api并

conn.system_service().openstack_network_providers_service().list()
我看到了我想要的
OpenStackNetworkProvider
实例。我似乎找不到具有
add
方法的
openstack\u networks\u服务
的路径,也找不到向
网络
对象添加
外部
提供者
字段以创建外部网络的方法


使用API使用外部提供商创建网络的正确方法是什么?

虽然我没有找到一个好的解决方案,可以直接将API用于所有网络,但我还是想出了一个解决方案。我首先直接联系中子服务器创建网络,然后返回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]