289 lines
8.2 KiB
Python
289 lines
8.2 KiB
Python
###
|
|
# Copyright 2016-2021 Hewlett Packard Enterprise, Inc. All rights reserved.
|
|
#
|
|
# 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.
|
|
###
|
|
|
|
# -*- coding: utf-8 -*-
|
|
"""Rdmc config"""
|
|
|
|
import os
|
|
import json
|
|
|
|
try:
|
|
from config.config import AutoConfigParser
|
|
from logging_config_path import get_logging_config_path
|
|
except ImportError:
|
|
from ilorest.config.config import AutoConfigParser
|
|
from ilorest.logging_config_path import get_logging_config_path
|
|
|
|
|
|
class RdmcConfig(AutoConfigParser):
|
|
"""Rdmc config class for loading and parsing the .conf file global configuration options.
|
|
Uses the AutoConfigParser."""
|
|
|
|
def _load_logdir_from_json(self):
|
|
"""Load logdir from logging configuration JSON file.
|
|
|
|
:returns: logdir path from JSON config, or current directory as fallback
|
|
:rtype: str
|
|
"""
|
|
config_path = get_logging_config_path()
|
|
try:
|
|
if os.path.isfile(config_path):
|
|
with open(config_path, "r", encoding="utf-8") as f:
|
|
config = json.load(f)
|
|
handlers = config.get("handlers", {})
|
|
file_handler = handlers.get("file", {})
|
|
filename = file_handler.get("filename", "")
|
|
if "%(logdir)s" in filename:
|
|
logdir = file_handler.get("filename").split("%(logdir)s")[0].rstrip("/\\")
|
|
return logdir if logdir else os.getcwd()
|
|
else:
|
|
# If filename does not contain %(logdir)s, extract directory from filename
|
|
return os.path.dirname(filename) if os.path.dirname(filename) else os.getcwd()
|
|
except Exception:
|
|
pass
|
|
|
|
# Fallback to current working directory if any issues
|
|
return os.getcwd()
|
|
|
|
def __init__(self, filename=None):
|
|
"""Initialize RdmcConfig
|
|
|
|
:param filename: file name to be used for Rdmcconfig loading.
|
|
:type filename: str
|
|
|
|
"""
|
|
AutoConfigParser.__init__(self, filename=filename)
|
|
self._sectionname = "redfish"
|
|
self._configfile = filename
|
|
self._ac__logdir = self._load_logdir_from_json()
|
|
self._ac__cache = True
|
|
self._ac__url = ""
|
|
self._ac__username = ""
|
|
self._ac__password = ""
|
|
self._ac__sslcert = ""
|
|
self._ac__commit = ""
|
|
self._ac__format = ""
|
|
self._ac__cachedir = ""
|
|
self._ac__savefile = ""
|
|
self._ac__loadfile = ""
|
|
self._ac__user_cert = ""
|
|
self._ac__user_root_ca_key = ""
|
|
self._ac__user_root_ca_password = ""
|
|
|
|
@property
|
|
def configfile(self):
|
|
"""The current configuration file"""
|
|
return self._configfile
|
|
|
|
@configfile.setter
|
|
def configfile(self, config_file):
|
|
"""Set the current configuration file
|
|
|
|
:param config_file: file name to be used for Rmcconfig loading.
|
|
:type config_file: str
|
|
"""
|
|
self._configfile = config_file
|
|
|
|
@property
|
|
def logdir(self):
|
|
"""Get the current log directory"""
|
|
return self._get("logdir")
|
|
|
|
@logdir.setter
|
|
def logdir(self, value):
|
|
"""Set the current log directory
|
|
:param value: current working directory for logging
|
|
:type value: str
|
|
"""
|
|
return self._set("logdir", value)
|
|
|
|
@property
|
|
def cache(self):
|
|
"""Get the config file cache status"""
|
|
|
|
if isinstance(self._get("cache"), bool):
|
|
return self._get("cache")
|
|
|
|
return self._get("cache").lower() in ("yes", "true", "t", "1")
|
|
|
|
@cache.setter
|
|
def cache(self, value):
|
|
"""Get the config file cache status
|
|
|
|
:param value: status of config file cache
|
|
:type value: bool
|
|
"""
|
|
return self._set("cache", value)
|
|
|
|
@property
|
|
def url(self):
|
|
"""Get the config file URL"""
|
|
url = self._get("url")
|
|
url = url[:-1] if url.endswith("/") else url
|
|
|
|
return url
|
|
|
|
@url.setter
|
|
def url(self, value):
|
|
"""Set the config file URL
|
|
|
|
:param value: URL path for the config file
|
|
:type value: str
|
|
"""
|
|
return self._set("url", value)
|
|
|
|
@property
|
|
def username(self):
|
|
"""Get the config file user name"""
|
|
return self._get("username")
|
|
|
|
@username.setter
|
|
def username(self, value):
|
|
"""Set the config file user name
|
|
|
|
:param value: user name for config file
|
|
:type value: str
|
|
"""
|
|
return self._set("username", value)
|
|
|
|
@property
|
|
def password(self):
|
|
"""Get the config file password"""
|
|
return self._get("password")
|
|
|
|
@password.setter
|
|
def password(self, value):
|
|
"""Set the config file password
|
|
|
|
:param value: password for config file
|
|
:type value: str
|
|
"""
|
|
return self._set("password", value)
|
|
|
|
@property
|
|
def commit(self):
|
|
"""Get the config file commit status"""
|
|
return self._get("commit")
|
|
|
|
@commit.setter
|
|
def commit(self, value):
|
|
"""Set the config file commit status
|
|
|
|
:param value: commit status
|
|
:type value: str
|
|
"""
|
|
return self._set("commit", value)
|
|
|
|
@property
|
|
def format(self):
|
|
"""Get the config file default format"""
|
|
return self._get("format")
|
|
|
|
@format.setter
|
|
def format(self, value):
|
|
"""Set the config file default format
|
|
|
|
:param value: set the config file format
|
|
:type value: str
|
|
"""
|
|
return self._set("format", value)
|
|
|
|
@property
|
|
def cachedir(self):
|
|
"""Get the config file cache directory"""
|
|
return self._get("cachedir")
|
|
|
|
@cachedir.setter
|
|
def cachedir(self, value):
|
|
"""Set the config file cache directory
|
|
|
|
:param value: config file cache directory
|
|
:type value: str
|
|
"""
|
|
return self._set("cachedir", value)
|
|
|
|
@property
|
|
def defaultsavefilename(self):
|
|
"""Get the config file default save name"""
|
|
return self._get("savefile")
|
|
|
|
@defaultsavefilename.setter
|
|
def defaultsavefilename(self, value):
|
|
"""Set the config file default save name
|
|
|
|
:param value: config file save name
|
|
:type value: str
|
|
"""
|
|
return self._set("savefile", value)
|
|
|
|
@property
|
|
def defaultloadfilename(self):
|
|
"""Get the config file default load name"""
|
|
return self._get("loadfile")
|
|
|
|
@defaultloadfilename.setter
|
|
def defaultloadfilename(self, value):
|
|
"""Set the config file default load name
|
|
|
|
:param value: name of config file to load by default
|
|
:type value: str
|
|
"""
|
|
return self._set("loadfile", value)
|
|
|
|
@property
|
|
def proxy(self):
|
|
"""Get proxy value to be set for communication"""
|
|
return self._get("proxy")
|
|
|
|
@proxy.setter
|
|
def proxy(self, value):
|
|
"""Set proxy value for communication"""
|
|
return self._set("proxy", value)
|
|
|
|
@property
|
|
def ssl_cert(self):
|
|
"""Get proxy value to be set for communication"""
|
|
return self._get("sslcert")
|
|
|
|
@ssl_cert.setter
|
|
def ssl_cert(self, value):
|
|
"""Set proxy value for communication"""
|
|
return self._set("sslcert", value)
|
|
|
|
@property
|
|
def user_cert(self):
|
|
return self._get("usercert")
|
|
|
|
@user_cert.setter
|
|
def user_cert(self, value):
|
|
return self._set("usercert", value)
|
|
|
|
@property
|
|
def user_root_ca_key(self):
|
|
return self._get("user_root_ca_key")
|
|
|
|
@user_root_ca_key.setter
|
|
def user_root_ca_key(self, value):
|
|
return self._set("user_root_ca_key", value)
|
|
|
|
@property
|
|
def user_root_ca_password(self):
|
|
return self._get("user_root_ca_password")
|
|
|
|
@user_root_ca_password.setter
|
|
def user_root_ca_password(self, value):
|
|
return self._set("user_root_ca_password", value)
|