0

oVirt Engine バージョン 4.1.2.2-1.el7.centos を使用して Python で ovirtskd4 を使用しています。Openstack Network Provider で新しいネットワークを作成しようとしています。Web ページの GUI を使用する場合は、[エクスポート] をクリックして、プルダウンからプロバイダーを選択するだけです。

同様に、API を使用して行う場合

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

OpenStackNetworkProvider必要なインスタンスが表示されます。外部ネットワークを作成するためにオブジェクトにまたはフィールドを追加するメソッドまたは方法openstack_networks_serviceを持つへのパスを見つけることができないようです。addexternalproviderNetwork

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

4

1 に答える 1

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]
于 2017-07-19T13:29:47.800 に答える