2017-07-18 12 views
0

私は、oVirt Engineバージョン4.1.2.2-1.el7.centosでPythonでovirtskd4を使用しています。 Openstackネットワークプロバイダで新しいネットワークを作成しようとしています。 WebページのGUIを使用している場合、「エクスポート」をクリックしてプルダウンからプロバイダを選択することができます。私はAPIを使用してAPIを使用して外部プロバイダにネットワークを追加する

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

をすれば

同様に、私は私が欲しいOpenStackNetworkProviderインスタンスを参照してください。 addメソッドを持つopenstack_networks_serviceのいずれかのパスを見つけることができないか、externalまたはproviderフィールドをNetworkオブジェクトに追加して外部ネットワークを作成する方法を見つけることができません。

外部プロバイダを使用してネットワークを作成するためのAPIの正しい方法は何ですか?

答えて

0

私はすべてのAPIで直接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] 
関連する問題