diff options
| author | Yaguang Tang <yaguang.tang@canonical.com> | 2013-02-15 22:57:00 +0800 |
|---|---|---|
| committer | Yaguang Tang <yaguang.tang@canonical.com> | 2013-02-17 11:57:03 +0800 |
| commit | 7e04e0f6acf6b8e2ceeca273133570786c8e0f91 (patch) | |
| tree | b70499241298140c72115bc18dfbce0509d2040a | |
| parent | 082c4ca417705975b8ef3672ce6ed40661d0f019 (diff) | |
Add support for instance vif traffic control.
Part 2 for blueprint quota-instance-resource, by adding exposed params
"vif_inbound_average, vif_inbound_burst, vif_inbound_peak,
vif_outbound_average, vif_outbound_burst, vif_outbound_peak" through
nova flavor-set, user can implement instance net traffic control policy.
for example:
nova flavor-set m1.medium set vif_inbound_average=10240000,
then the max inbound speed is 10MB/s. The usecase details of other params
will be noted on openstack-manuals.
Partly implement blueprint quota-instance-resource
DocImpact
original reviews https://review.openstack.org/#/c/14151/
Change-Id: I9934daadbf0e136e88530f5c23b556d070395bd0
| -rw-r--r-- | nova/tests/test_libvirt.py | 3 | ||||
| -rw-r--r-- | nova/tests/utils.py | 3 | ||||
| -rw-r--r-- | nova/virt/libvirt/designer.py | 11 | ||||
| -rw-r--r-- | nova/virt/libvirt/vif.py | 1 |
4 files changed, 16 insertions, 2 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index d2cd5a757..6f63d3791 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -293,7 +293,8 @@ class LibvirtConnTestCase(test.TestCase): 'image_ref': '155d900f-4e14-4e4c-a73d-069cbf4541e6', 'root_gb': 10, 'ephemeral_gb': 20, - 'instance_type_id': '5'} # m1.small + 'instance_type_id': '5', # m1.small + 'extra_specs': {}} def tearDown(self): nova.tests.image.fake.FakeImageService_reset() diff --git a/nova/tests/utils.py b/nova/tests/utils.py index 56be3ab71..74199eb92 100644 --- a/nova/tests/utils.py +++ b/nova/tests/utils.py @@ -83,7 +83,8 @@ def get_test_instance(context=None, instance_type=None): 'bridge': 'br101', 'image_ref': 'cedef40a-ed67-4d10-800e-17455edce175', 'instance_type_id': '5', - 'system_metadata': metadata} + 'system_metadata': metadata, + 'extra_specs': {}} instance_ref = nova.db.instance_create(context, test_instance) return instance_ref diff --git a/nova/virt/libvirt/designer.py b/nova/virt/libvirt/designer.py index 176eeef4c..3ccf1b8c6 100644 --- a/nova/virt/libvirt/designer.py +++ b/nova/virt/libvirt/designer.py @@ -131,3 +131,14 @@ def set_vif_host_backend_filter_config(conf, name, net, prefix = netutils.get_net_and_prefixlen(ipv6_cidr) conf.add_filter_param("PROJNET6", net) conf.add_filter_param("PROJMASK6", prefix) + + +def set_vif_bandwidth_config(conf, extra_specs): + """Config vif inbound/outbound bandwidth limit.""" + + bandwidth_items = ['vif_inbound_average', 'vif_inbound_peak', + 'vif_inbound_burst', 'vif_outbound_average', 'vif_outbound_peak', + 'vif_outbound_burst'] + for key, value in extra_specs.iteritems(): + if key in bandwidth_items: + setattr(conf, key, value) diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py index ee4f7e194..000c77db9 100644 --- a/nova/virt/libvirt/vif.py +++ b/nova/virt/libvirt/vif.py @@ -188,6 +188,7 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver): designer.set_vif_host_backend_filter_config( conf, name, primary_addr, dhcp_server, ra_server, ipv4_cidr, ipv6_cidr) + designer.set_vif_bandwidth_config(conf, instance) return conf |
