proliantutils/proliantutils/redfish/main.py

103 lines
4.2 KiB
Python

# Copyright 2017 Hewlett Packard Enterprise Development LP
#
# 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.
__author__ = 'HPE'
import sushy
from proliantutils.redfish import connector
from proliantutils.redfish.resources.account_service import account_service
from proliantutils.redfish.resources.manager import manager
from proliantutils.redfish.resources.system import system
from proliantutils.redfish.resources import update_service
from proliantutils.redfish import utils
class HPESushy(sushy.Sushy):
"""Class that extends base Sushy class
This class extends the Sushy class to override certain methods
required to customize the functionality of different resources.
It bypasses the initialization of the Sushy class and initializes
the ResourceBase class with customized HPE specific connector subtype.
"""
def __init__(self, base_url, username=None, password=None,
root_prefix='/redfish/v1/', verify=True):
"""Initializes HPE specific sushy object.
:param base_url: The base URL to the Redfish controller. It
should include scheme and authority portion of the URL. For
example: https://mgmt.vendor.com
:param username: User account with admin/server-profile access
privilege
:param password: User account password
:param root_prefix: The default URL prefix. This part includes
the root service and version. Defaults to /redfish/v1
:param verify: Either a boolean value, a path to a CA_BUNDLE
file or directory with certificates of trusted CAs. If set to
True the driver will verify the host certificates; if False
the driver will ignore verifying the SSL certificate; if it's
a path the driver will use the specified certificate or one of
the certificates in the directory. Defaults to True.
"""
self._root_prefix = root_prefix
super(sushy.Sushy, self).__init__(
connector.HPEConnector(base_url, username, password, verify),
path=self._root_prefix)
def get_system_collection_path(self):
return utils.get_subresource_path_by(self, 'Systems')
def get_system(self, identity):
"""Given the identity return a HPESystem object
:param identity: The identity of the System resource
:returns: The System object
"""
return system.HPESystem(self._conn, identity,
redfish_version=self.redfish_version)
def get_manager_collection_path(self):
return utils.get_subresource_path_by(self, 'Managers')
def get_manager(self, identity):
"""Given the identity return a HPEManager object
:param identity: The identity of the Manager resource
:returns: The Manager object
"""
return manager.HPEManager(self._conn, identity,
redfish_version=self.redfish_version)
def get_update_service(self):
"""Return a HPEUpdateService object
:returns: The UpdateService object
"""
update_service_url = utils.get_subresource_path_by(self,
'UpdateService')
return (update_service.
HPEUpdateService(self._conn, update_service_url,
redfish_version=self.redfish_version))
def get_account_service(self):
"""Return a HPEAccountService object"""
account_service_url = utils.get_subresource_path_by(self,
'AccountService')
return (account_service.
HPEAccountService(self._conn, account_service_url,
redfish_version=self.redfish_version))