Add update method in EthernetSwitchStaticMAC in RSD 2.1

Change-Id: I04790902566a6456b6d95089eca1d8a2925d73b6
This commit is contained in:
Lin Yang 2019-03-26 20:18:47 -07:00
parent 9720ce2e89
commit ee8adbbb1d
2 changed files with 62 additions and 1 deletions

View File

@ -16,6 +16,7 @@
from jsonschema import validate from jsonschema import validate
import logging import logging
from sushy import exceptions
from sushy.resources import base from sushy.resources import base
from rsd_lib import base as rsd_lib_base from rsd_lib import base as rsd_lib_base
@ -36,6 +37,32 @@ class EthernetSwitchStaticMAC(rsd_lib_base.ResourceBase):
mac_address = base.Field("MACAddress") mac_address = base.Field("MACAddress")
"""The static mac address""" """The static mac address"""
def update(self, mac_address, vlan_id=None):
"""Update attributes of static MAC
:param mac_address: MAC address that should be forwarded to this port
:param vlan_id: If specified, defines which packets tagged with
specific VLANId should be forwarded to this port
"""
if not isinstance(mac_address, type("")):
raise exceptions.InvalidParameterValueError(
parameter="mac_address",
value=mac_address,
valid_values="string",
)
data = {"MACAddress": mac_address}
if vlan_id is not None:
if not isinstance(vlan_id, int):
raise exceptions.InvalidParameterValueError(
parameter="vlan_id",
value=vlan_id,
valid_values="int",
)
data["VLANId"] = vlan_id
self._conn.patch(self.path, data=data)
def delete(self): def delete(self):
"""Delete this static mac address""" """Delete this static mac address"""
self._conn.delete(self._path) self._conn.delete(self._path)

View File

@ -15,10 +15,11 @@
import json import json
import jsonschema import jsonschema
import mock import mock
import testtools import testtools
from sushy import exceptions
from rsd_lib.resources.v2_1.ethernet_switch import ethernet_switch_static_mac from rsd_lib.resources.v2_1.ethernet_switch import ethernet_switch_static_mac
from rsd_lib.tests.unit.fakes import request_fakes from rsd_lib.tests.unit.fakes import request_fakes
@ -52,6 +53,39 @@ class EthernetSwitchStaticMACTestCase(testtools.TestCase):
self.assertEqual("00:11:22:33:44:55", self.static_mac_inst.mac_address) self.assertEqual("00:11:22:33:44:55", self.static_mac_inst.mac_address)
self.assertEqual(112, self.static_mac_inst.vlan_id) self.assertEqual(112, self.static_mac_inst.vlan_id)
def test_update(self):
reqs = {"MACAddress": "00:11:22:33:44:55"}
self.static_mac_inst.update("00:11:22:33:44:55")
self.static_mac_inst._conn.patch.assert_called_once_with(
"/redfish/v1/EthernetSwitches/Switch1/Ports/StaticMACs/1",
data=reqs,
)
self.static_mac_inst._conn.patch.reset_mock()
reqs = {"MACAddress": "00:11:22:33:44:55", "VLANId": 69}
self.static_mac_inst.update(
"00:11:22:33:44:55", vlan_id=69
)
self.static_mac_inst._conn.patch.assert_called_once_with(
"/redfish/v1/EthernetSwitches/Switch1/Ports/StaticMACs/1",
data=reqs,
)
def test_update_invalid_reqs(self):
with self.assertRaisesRegex(
exceptions.InvalidParameterValueError,
('The parameter "mac_address" value "True" is invalid'),
):
self.static_mac_inst.update(True)
with self.assertRaisesRegex(
exceptions.InvalidParameterValueError,
('The parameter "vlan_id" value "invalid-value" is invalid'),
):
self.static_mac_inst.update(
"00:11:22:33:44:55", vlan_id="invalid-value"
)
def test_delete(self): def test_delete(self):
self.static_mac_inst.delete() self.static_mac_inst.delete()
self.static_mac_inst._conn.delete.assert_called_once_with( self.static_mac_inst._conn.delete.assert_called_once_with(