Files
sushy/sushy/resources/system/ethernet_interface.py
Debayan Ray d44059483c Add system simple storage resource support
Adds the simple storage resource of Redfish standard schema.
This new resource represents the properties of a storage
controller and its directly-attached devices. This patch
introduces the property ``max_size_bytes`` of
SimpleStorageCollection resource to expose the size of the
largest storage size available among all directly attached
devices available to the System.

Also brought in the common 'Status' (comprising of Health,
HealthRollup and State sub-fields) field and refactored the code
base to use that field across all the Redfish resources.

Story: 1668487
Task: 23041

Change-Id: I512c2507bf78f4a9cf1e2525fd685836387a7581
2018-07-19 07:43:31 +00:00

87 lines
2.8 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# This is referred from Redfish standard schema.
# http://redfish.dmtf.org/schemas/EthernetInterface.v1_3_0.json
import logging
from sushy.resources import base
from sushy.resources import common
from sushy.resources import constants as res_cons
LOG = logging.getLogger(__name__)
class EthernetInterface(base.ResourceBase):
"""This class adds the EthernetInterface resource"""
identity = base.Field('Id', required=True)
"""The Ethernet Interface identity string"""
name = base.Field('Name')
"""The name of the resource or array element"""
description = base.Field('Description')
"""Description"""
permanent_mac_address = base.Field('PermanentMACAddress')
"""This is the permanent MAC address assigned to this interface (port) """
mac_address = base.Field('MACAddress')
"""This is the currently configured MAC address of the interface."""
speed_mbps = base.Field('SpeedMbps')
"""This is the current speed in Mbps of this interface."""
status = common.StatusField("Status")
"""Describes the status and health of this interface."""
class EthernetInterfaceCollection(base.ResourceCollectionBase):
_summary = None
@property
def _resource_type(self):
return EthernetInterface
@property
def summary(self):
"""Summary of MAC addresses and interfaces state
This filters the MACs whose health is OK,
which means the MACs in both 'Enabled' and 'Disabled' States
are returned.
:returns: dictionary in the format
{'aa:bb:cc:dd:ee:ff': sushy.STATE_ENABLED,
'aa:bb:aa:aa:aa:aa': sushy.STATE_DISABLED}
"""
if self._summary is None:
mac_dict = {}
for eth in self.get_members():
if eth.mac_address is not None and eth.status is not None:
if eth.status.health == res_cons.HEALTH_OK:
mac_dict[eth.mac_address] = eth.status.state
self._summary = mac_dict
return self._summary
def _do_refresh(self, force=False):
"""Do custom resource specific refresh activities
On refresh, all sub-resources are marked as stale, i.e.
greedy-refresh not done for them unless forced by ``force``
argument.
"""
self._summary = None