103 lines
4.2 KiB
Python
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))
|