mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-18 16:31:26 -07:00
Add SetSessionService to redfish_config (#5009)
* Add SetSessionService to redfish_config adding SetSessionService command to redfish_config to set BMC default session timeout policy. Fixes #5008 * fix white space issues * Making Requested changes: - changed category from SessionService to Sessions - changed set_sessionservice() to set_session_service() - other misc. changes for cleanup * Apply suggestions from code review Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * Fix issues with checks * Fix issues with checks part 2 * Fix issues with checks part 3 * Update plugins/modules/remote_management/redfish/redfish_config.py Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
fb1cf91ebd
commit
d9d830a168
3 changed files with 92 additions and 1 deletions
|
@ -240,6 +240,7 @@ class RedfishUtils(object):
|
|||
return {'ret': False, 'msg': "SessionService resource not found"}
|
||||
else:
|
||||
session_service = data["SessionService"]["@odata.id"]
|
||||
self.session_service_uri = session_service
|
||||
response = self.get_request(self.root_uri + session_service)
|
||||
if response['ret'] is False:
|
||||
return response
|
||||
|
@ -3081,3 +3082,60 @@ class RedfishUtils(object):
|
|||
|
||||
def get_multi_manager_inventory(self):
|
||||
return self.aggregate_managers(self.get_manager_inventory)
|
||||
|
||||
def set_session_service(self, sessions_config):
|
||||
result = {}
|
||||
response = self.get_request(self.root_uri + self.session_service_uri)
|
||||
if response['ret'] is False:
|
||||
return response
|
||||
current_sessions_config = response['data']
|
||||
payload = {}
|
||||
for property, value in sessions_config.items():
|
||||
value = sessions_config[property]
|
||||
if property not in current_sessions_config:
|
||||
return {'ret': False, 'msg': "Property %s in sessions_config is invalid" % property}
|
||||
if isinstance(value, dict):
|
||||
if isinstance(current_sessions_config[property], dict):
|
||||
payload[property] = value
|
||||
elif isinstance(current_sessions_config[property], list):
|
||||
payload[property] = [value]
|
||||
else:
|
||||
return {'ret': False, 'msg': "Value of property %s in sessions_config is invalid" % property}
|
||||
else:
|
||||
payload[property] = value
|
||||
|
||||
need_change = False
|
||||
for property, set_value in payload.items():
|
||||
cur_value = current_sessions_config[property]
|
||||
if not isinstance(set_value, (dict, list)):
|
||||
if set_value != cur_value:
|
||||
need_change = True
|
||||
if isinstance(set_value, dict):
|
||||
for subprop in set_value.keys():
|
||||
if subprop not in current_sessions_config[property]:
|
||||
need_change = True
|
||||
break
|
||||
sub_set_value = set_value[subprop]
|
||||
sub_cur_value = current_sessions_config[property][subprop]
|
||||
if sub_set_value != sub_cur_value:
|
||||
need_change = True
|
||||
if isinstance(set_value, list):
|
||||
if len(set_value) != len(cur_value):
|
||||
need_change = True
|
||||
continue
|
||||
for i in range(len(set_value)):
|
||||
for subprop in set_value[i].keys():
|
||||
if subprop not in current_sessions_config[property][i]:
|
||||
need_change = True
|
||||
break
|
||||
sub_set_value = set_value[i][subprop]
|
||||
sub_cur_value = current_sessions_config[property][i][subprop]
|
||||
if sub_set_value != sub_cur_value:
|
||||
need_change = True
|
||||
if not need_change:
|
||||
return {'ret': True, 'changed': False, 'msg': "SessionService already configured"}
|
||||
|
||||
response = self.patch_request(self.root_uri + self.session_service_uri, payload)
|
||||
if response['ret'] is False:
|
||||
return response
|
||||
return {'ret': True, 'changed': True, 'msg': "Modified SessionService"}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue