2017-07-18 70 views
0

我在使用oVirt Engine版本4.1.2.2-1.el7.centos的python中使用ovirtskd4。我正嘗試在Openstack網絡提供商上創建新的網絡。如果我使用網頁GUI,我可以單擊「導出」並從下拉列表中選擇提供者。使用API​​將網絡添加到外部提供商

同樣,如果我使用API​​並做

conn.system_service().openstack_network_providers_service().list() 

我看到OpenStackNetworkProvider比如我想要的。我似乎無法找到具有add方法的openstack_networks_service的路徑或將externalprovider字段添加到Network對象以創建外部網絡的方法。

API使用外部提供者創建網絡的正確方法是什麼?

回答

0

雖然我沒有找到一個很好的解決方案來直接使用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]