Source code for PyU4V.performance_enhanced

# Copyright (c) 2023 Dell Inc. or its subsidiaries.
#
# 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.
"""performance_enhanced.py."""

import logging

from PyU4V.common import CommonFunctions
from PyU4V.utils import constants

LOG = logging.getLogger(__name__)


[docs] class EnhancedPerformanceFunctions(object): """Enhanced Functions for retrieving latest diagnostic level performance Metrics.""" def __init__(self, array_id, rest_client): """__init__.""" self.common = CommonFunctions(rest_client) self.get_resource = self.common.get_resource self.create_resource = self.common.create_resource self.modify_resource = self.common.modify_resource self.delete_resource = self.common.delete_resource self.array_id = array_id self.enhanced_api_version = constants.ENHANCED_API_VERSION
[docs] def get_performance_categories_list(self, array_id=None): """Get a list of performance categories and metrics that will be returned for each category. :param array_id: 12 Digit Serial Number of Array -- int :returns: a list of categories available for querying, returned list has dictionary of category represented by 'id' key and 'metrics' key detailing what will be returned for the given array represented by 'system' key -- list """ array_id = array_id if array_id else self.array_id response = self.common.get_request( target_uri=f"/{self.enhanced_api_version}/systems" f"/{array_id}/performance-categories", resource_type=None) if response: category_list = response['performance_categories'] else: category_list = [] return category_list
[docs] def get_all_performance_metrics_for_system(self, array_id=None): """Get latest data for all KPI metrics. :param array_id: 12 Digit Serial Number of Array -- int :returns: data for all available categories for the specified PowerMax Array diagnostic level metrics only, 5 min interval -- dict """ array_id = array_id if array_id else self.array_id category_list = self.get_performance_categories_list(array_id=array_id) full_metric_collection = [] for category in category_list: response = self.common.get_request( target_uri=f"/{self.enhanced_api_version}/systems" f"/{array_id}/performance-categories/" f"{category['id']}", resource_type=None) if response is not None: full_metric_collection.append(response) return full_metric_collection
[docs] def get_category_metrics(self, category, array_id=None): """Get latest data for KPI metrics for specificied performance category. :param array_id: 12 Digit Serial Number of Array -- int :returns: full list of all KPI metrics for latest diagnostic timestamp for the specified array and performance category -- dict """ array_id = array_id if array_id else self.array_id response = self.common.get_request( target_uri=f"/{self.enhanced_api_version}/systems" f"/{array_id}/performance-categories/" f"{category}", resource_type=None) return response