python-redfish/redfish/mapping.py
2016-04-06 18:32:22 +02:00

61 lines
1.8 KiB
Python

# coding=utf-8
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from future import standard_library
from builtins import object
standard_library.install_aliases()
redfish_mapper = None
redfish_version = None
redfish_root_name = None
class RedfishVersionMapping(object):
'''Implements basic url path mapping beetween Redfish versions.'''
def __init__(self, version, rootname):
self.__version = version
self.__rootname = rootname
def map_sessionservice(self):
if self.__version == '0.95':
return 'Sessions'
return 'SessionService'
def map_links(self, data_dict=None):
if data_dict is None:
if self.__version == '0.95':
return 'links'
else:
# Checking if we have Links or links.
# This is to deal with proliant firmware 2.40 bug that reports
# incorrectly links instead of Links (Redfish standard)
try:
data_dict.links
return 'links'
except AttributeError:
pass
return 'Links'
def map_links_ref(self, data_dict=None):
if data_dict is None:
if self.__version == '0.95':
return 'href'
else:
# Checking if we have @odata.id or href.
# This is to deal with proliant firmware 2.40 bug that reports
# incorrectly href instead of @odata.id (Redfish standard)
try:
data_dict.href
return 'href'
except AttributeError:
pass
return '@odata.id'
def map_members(self):
if self.__version == '0.95':
return 'Member'
return 'Members'