61 lines
1.8 KiB
Python
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'
|