Add support for virtual switch manager
This commit is contained in:
parent
dadf7706c7
commit
89aaf279bf
@ -1018,3 +1018,81 @@ class AccessControlLists(_BaseHNVModel):
|
|||||||
properties["configurationState"] = configuration
|
properties["configurationState"] = configuration
|
||||||
|
|
||||||
return super(AccessControlLists, cls).from_raw_data(raw_data)
|
return super(AccessControlLists, cls).from_raw_data(raw_data)
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualSwtichQosSettings(model.Model):
|
||||||
|
|
||||||
|
"""Model for virtual switch QoS settings."""
|
||||||
|
|
||||||
|
reservation_mode = model.Field(
|
||||||
|
name="reservation_mode", key="reservationMode",
|
||||||
|
is_required=False, is_property=False)
|
||||||
|
"""Specifies whether outboundReservedValue is applied as the absolute
|
||||||
|
bandwidth (Mbps) or as a weighted value.
|
||||||
|
Allowed values are `constant.ABSOLUTE` or `constant.WEIGHT`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
enable_software_revervations = model.Field(
|
||||||
|
name="enable_software_revervations", key="enableSoftwareReservations",
|
||||||
|
is_required=False, is_property=False)
|
||||||
|
"""True to enable software qos reservation."""
|
||||||
|
|
||||||
|
enable_hardware_limits = model.Field(
|
||||||
|
name="enable_hardware_limits", key="enableHardwareLimits",
|
||||||
|
is_required=False, is_property=False)
|
||||||
|
"""Offloads Tx and Rx cap to hardware."""
|
||||||
|
|
||||||
|
enable_hardware_reservations = model.Field(
|
||||||
|
name="enable_hardware_reservations", key="enableHardwareReservations",
|
||||||
|
is_required=False, is_property=False)
|
||||||
|
"""Offloads bandwith reservation to hardware."""
|
||||||
|
|
||||||
|
link_speed_percentage = model.Field(
|
||||||
|
name="link_speed_percentage", key="linkSpeedPercentage",
|
||||||
|
is_required=False, is_property=False)
|
||||||
|
"""The percentage of the link speed to be used for calculating reservable
|
||||||
|
bandwidth."""
|
||||||
|
|
||||||
|
default_reservation = model.Field(
|
||||||
|
name="default_reservation", key="defaultReservation",
|
||||||
|
is_required=False, is_property=False, default=0)
|
||||||
|
"""The default value of the reservation to be used for Nics that do not
|
||||||
|
have any reservation specified (0)."""
|
||||||
|
|
||||||
|
|
||||||
|
class VirtualSwitchManager(_BaseHNVModel):
|
||||||
|
|
||||||
|
"""Virtual switch manager model.
|
||||||
|
|
||||||
|
The virtualSwitchManager resource is a singleton resource that
|
||||||
|
configures the virtual switch properties on every server managed
|
||||||
|
by the Network Controller (meaning that the NC has server resources for
|
||||||
|
those machines).
|
||||||
|
"""
|
||||||
|
|
||||||
|
_endpoint = "/networking/v1/virtualSwitchManager/configuration"
|
||||||
|
|
||||||
|
qos_settings = model.Field(name="qos_settings", key="qosSettings",
|
||||||
|
is_required=False)
|
||||||
|
|
||||||
|
def __init__(self, **fields):
|
||||||
|
qos_settings = fields.pop("qos_settings", {})
|
||||||
|
if not isinstance(qos_settings, VirtualSwtichQosSettings):
|
||||||
|
fields["qos_settings"] = VirtualSwtichQosSettings.from_raw_data(
|
||||||
|
raw_data=qos_settings)
|
||||||
|
super(VirtualSwitchManager, self).__init__(**fields)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_raw_data(cls, raw_data):
|
||||||
|
"""Create a new model using raw API response."""
|
||||||
|
properties = raw_data["properties"]
|
||||||
|
qos_settings = properties.get("qosSettings", {})
|
||||||
|
properties["qosSettings"] = VirtualSwtichQosSettings.from_raw_data(
|
||||||
|
raw_data=qos_settings)
|
||||||
|
return super(VirtualSwitchManager, cls).from_raw_data(raw_data)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def remove(cls, resource_id, parent_id=None, wait=True, timeout=None):
|
||||||
|
"""Delete the required resource."""
|
||||||
|
raise exception.NotSupported(feature="DELETE",
|
||||||
|
context="VirtualSwitchManager")
|
||||||
|
@ -69,3 +69,7 @@ class FakeResponse(object):
|
|||||||
def acl(self):
|
def acl(self):
|
||||||
"""Fake GET(all) response for ACL."""
|
"""Fake GET(all) response for ACL."""
|
||||||
return self._load_resource("acl.json")
|
return self._load_resource("acl.json")
|
||||||
|
|
||||||
|
def virtual_switch_manager(self):
|
||||||
|
"""Fake GET response for virtual switch manager."""
|
||||||
|
return self._load_resource("virtual_switch_manager.json")
|
||||||
|
14
hnv_client/tests/fake/response/virtual_switch_manager.json
Normal file
14
hnv_client/tests/fake/response/virtual_switch_manager.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"resourceId": "configuration",
|
||||||
|
"etag": "W/\"14753c1f-5893-45d7-8710-daf66c8dbb1e\"",
|
||||||
|
"properties": {
|
||||||
|
"qosSettings": {
|
||||||
|
"reservationMode": "Weight",
|
||||||
|
"linkSpeedPercentage": 50,
|
||||||
|
"defaultReservation": 10,
|
||||||
|
"enableHardwareLimits": false,
|
||||||
|
"enableHardwareReservations": false,
|
||||||
|
"enableSoftwareReservations": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -270,3 +270,8 @@ class TestClient(unittest.TestCase):
|
|||||||
|
|
||||||
for acl_rule in acl.acl_rules:
|
for acl_rule in acl.acl_rules:
|
||||||
self.assertIsInstance(acl_rule, client.ACLRules)
|
self.assertIsInstance(acl_rule, client.ACLRules)
|
||||||
|
|
||||||
|
def test_virtual_switch_manager(self):
|
||||||
|
raw_data = self._response.virtual_switch_manager()
|
||||||
|
self._test_get_resource(model=client.VirtualSwitchManager,
|
||||||
|
raw_data=raw_data)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user