用于HNV(Hyper-V网络虚拟化)REST API的Python客户端。
项目描述
# python-hnv
[](https://travis-ci.org/cloudbase/python-hnvclient)
用于HNV(Hyper-V网络虚拟化)REST API的Python客户端。
- 许可协议:Apache许可证版本2.0
## Python API
Python接口与底层REST API相匹配,可用于第三方项目。
```python
>>> from hnv import client
>>> logical_networks = client.LogicalNetworks.get()
>>> for logical_network in logical_networks
... print(logical_network.resource_id)
...
"63606911-e053-42cf-842e-29f67c90d5c6"
"c4cd42ff-5efb-4006-ac56-479730557926"
"cd804db3-df59-4f57-8a7d-11cc3f3c4d98"
>>> logical_network = client.LogicalNetworks.get(resource_id="cd804db3-df59-4f57-8a7d-11cc3f3c4d98")
>>> logical_network
<hnv.client.LogicalNetworks 对象在 0x7fcd79419910 处>
>>> logical_network.provisioning_state
成功
>>> logical_network.subnetworks
[<hnv.client.LogicalSubnetworks 对象在 0x7fcd79419150 处>]
>>> logical_network.subnetworks[0].resource_id
u'4390e3d8-c527-4534-882f-906c47ffd0bb'
```
或
```python
from __future__ import print_function
import json
import sys
from hnv import config
from hnv import client
def view_logical_networks()
"""列出所有可用的逻辑网络。"""
logical_networks = client.LogicalNetworks.get()
print("逻辑网络:")
for logical_network in logical_networks
print("\t - ", logical_network.resource_ref)
print("\t\t", "逻辑子网络:")
for logical_subnetwork in logical_network.subnetworks
print("\t\t - %s (%s)" % (logical_subnetwork.resource_id,
logical_subnetwork.address_prefix))
print("\t\t", "虚拟网络:")
for virtual_network in logical_network.virtual_networks
print("\t\t - %s" % virtual_network.resource_ref)
def create_virtual_network()
"""在第一个逻辑网络上创建一个新的虚拟网络。"""
print("创建新的虚拟网络。")
address_space = client.AddressSpace(
address_prefixes=["192.168.133.0/24"])
logical_network = client.Resource(
resource_ref=client.LogicalNetworks.get()[0].resource_ref)
virtual_network = client.VirtualNetworks(
resource_id="hvn-test",
address_space=address_space,
logical_network=logical_network,
)
virtual_network.commit()
print("新虚拟网络的原始内容")
print(json.dumps(virtual_network.dump(), indent=4))
def remove_virtual_network()
"""删除新的虚拟网络。"""
print("删除新的虚拟网络")
client.VirtualNetworks.remove(resource_id="hvn-test")
def main()
"""逻辑网络示例入口点。"""
config.CONFIG(sys.argv[1:])
view_logical_networks()
create_virtual_network()
view_logical_networks()
remove_virtual_network()
view_logical_networks()
```
[](https://travis-ci.org/cloudbase/python-hnvclient)
用于HNV(Hyper-V网络虚拟化)REST API的Python客户端。
- 许可协议:Apache许可证版本2.0
## Python API
Python接口与底层REST API相匹配,可用于第三方项目。
```python
>>> from hnv import client
>>> logical_networks = client.LogicalNetworks.get()
>>> for logical_network in logical_networks
... print(logical_network.resource_id)
...
"63606911-e053-42cf-842e-29f67c90d5c6"
"c4cd42ff-5efb-4006-ac56-479730557926"
"cd804db3-df59-4f57-8a7d-11cc3f3c4d98"
>>> logical_network = client.LogicalNetworks.get(resource_id="cd804db3-df59-4f57-8a7d-11cc3f3c4d98")
>>> logical_network
<hnv.client.LogicalNetworks 对象在 0x7fcd79419910 处>
>>> logical_network.provisioning_state
成功
>>> logical_network.subnetworks
[<hnv.client.LogicalSubnetworks 对象在 0x7fcd79419150 处>]
>>> logical_network.subnetworks[0].resource_id
u'4390e3d8-c527-4534-882f-906c47ffd0bb'
```
或
```python
from __future__ import print_function
import json
import sys
from hnv import config
from hnv import client
def view_logical_networks()
"""列出所有可用的逻辑网络。"""
logical_networks = client.LogicalNetworks.get()
print("逻辑网络:")
for logical_network in logical_networks
print("\t - ", logical_network.resource_ref)
print("\t\t", "逻辑子网络:")
for logical_subnetwork in logical_network.subnetworks
print("\t\t - %s (%s)" % (logical_subnetwork.resource_id,
logical_subnetwork.address_prefix))
print("\t\t", "虚拟网络:")
for virtual_network in logical_network.virtual_networks
print("\t\t - %s" % virtual_network.resource_ref)
def create_virtual_network()
"""在第一个逻辑网络上创建一个新的虚拟网络。"""
print("创建新的虚拟网络。")
address_space = client.AddressSpace(
address_prefixes=["192.168.133.0/24"])
logical_network = client.Resource(
resource_ref=client.LogicalNetworks.get()[0].resource_ref)
virtual_network = client.VirtualNetworks(
resource_id="hvn-test",
address_space=address_space,
logical_network=logical_network,
)
virtual_network.commit()
print("新虚拟网络的原始内容")
print(json.dumps(virtual_network.dump(), indent=4))
def remove_virtual_network()
"""删除新的虚拟网络。"""
print("删除新的虚拟网络")
client.VirtualNetworks.remove(resource_id="hvn-test")
def main()
"""逻辑网络示例入口点。"""
config.CONFIG(sys.argv[1:])
view_logical_networks()
create_virtual_network()
view_logical_networks()
remove_virtual_network()
view_logical_networks()
```