from redfish.rest.v1 import ServerDownOrUnreachableError
import redfish
-import logging
+from util import logger
+
+log = logger(__name__, level=10)
class RedFishClient:
PREFIX = '/redfish/v1'
def __init__(self, host, username, password):
+ log.info(f"redfish client initialization...")
self.host = host
self.username = username
self.password = password
default_prefix=self.PREFIX)
try:
self.redfish_obj.login(auth="session")
+ log.info(f"Logging to redfish api at {self.host} with user: {self.username}")
except ServerDownOrUnreachableError as e:
- logging.error(f"Server not reachable or does not support RedFish {e}", e)
+ log.error(f"Server not reachable or does not support RedFish {e}", e)
def get_path(self, path):
try:
if self.PREFIX not in path:
path = f"{self.PREFIX}{path}"
- print(f"getting: {path}")
+ log.debug(f"getting: {path}")
response = self.redfish_obj.get(path)
return response.dict
except Exception as e:
pass
def logout(self):
+ log.info('logging out...')
self.redfish_obj.logout()
from redfish_client import RedFishClient
from threading import Thread
from time import sleep
+from flask import request
+from util import logger
+
+log = logger(__name__)
+
class RedfishSystem(System):
def __init__(self, host, username, password):
+ log.info(f"redfish system initialization, host: {host}, user: {username}")
self.client = RedFishClient(host, username, password)
self.client.login()
self._system = {}
self._system = self._process_redfish_system(redfish_system)
def _update_metadata(self):
- print("Updating metadata")
+ log.info("Updating metadata")
pass
def _update_memory(self):
- print("Updating memory")
+ log.info("Updating memory")
pass
def _update_power(self):
- print("Updating power")
+ log.info("Updating power")
pass
def _update_network(self):
- print("Updating network")
net_path = self._system['EthernetInterfaces']['@odata.id']
+ log.info("Updating network")
network_info = self.client.get_path(net_path)
self._system['network'] = {}
for interface in network_info['Members']:
self._system['network'][interface_info['Id']] = interface_info
def _update_storage(self):
- print("Updating storage")
+ log.info("Updating storage")
pass
def start_update_loop(self):
from system import System
from redfish_system import RedfishSystem
from reporter import Reporter
+from util import logger
import time
+log = logger(__name__)
+
# must be passed as arguments
host = "https://x.x.x.x:8443"
username = "myuser"
# create the redfish system and the obsever
system = RedfishSystem(host, username, password)
+log.info(f"Server initialization...")
reporter_agent = Reporter(system, "http://127.0.0.1:8000")
app = Flask(__name__)
--- /dev/null
+import logging
+
+def logger(name, level=logging.INFO):
+ logger = logging.getLogger(name)
+ logger.setLevel(level)
+ handler = logging.StreamHandler()
+ handler.setLevel(level)
+ fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+ handler.setFormatter(fmt)
+ logger.addHandler(handler)
+
+ return logger