Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use different headers for each HTTP method #55193

Merged
merged 1 commit into from
Apr 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
47 changes: 26 additions & 21 deletions lib/ansible/module_utils/redfish_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@
from ansible.module_utils.six.moves import http_client
from ansible.module_utils.six.moves.urllib.error import URLError, HTTPError

HEADERS = {'content-type': 'application/json'}
GET_HEADERS = {'accept': 'application/json', 'OData-Version': '4.0'}
POST_HEADERS = {'content-type': 'application/json', 'accept': 'application/json',
'OData-Version': '4.0'}
PATCH_HEADERS = {'content-type': 'application/json', 'accept': 'application/json',
'OData-Version': '4.0'}
DELETE_HEADERS = {'accept': 'application/json', 'OData-Version': '4.0'}


class RedfishUtils(object):
Expand All @@ -25,7 +30,7 @@ def __init__(self, creds, root_uri, timeout):
# The following functions are to send GET/POST/PATCH/DELETE requests
def get_request(self, uri):
try:
resp = open_url(uri, method="GET",
resp = open_url(uri, method="GET", headers=GET_HEADERS,
url_username=self.creds['user'],
url_password=self.creds['pswd'],
force_basic_auth=True, validate_certs=False,
Expand All @@ -46,10 +51,10 @@ def get_request(self, uri):
'msg': "Failed GET request to '%s': '%s'" % (uri, to_text(e))}
return {'ret': True, 'data': data}

def post_request(self, uri, pyld, hdrs):
def post_request(self, uri, pyld):
try:
resp = open_url(uri, data=json.dumps(pyld),
headers=hdrs, method="POST",
headers=POST_HEADERS, method="POST",
url_username=self.creds['user'],
url_password=self.creds['pswd'],
force_basic_auth=True, validate_certs=False,
Expand All @@ -69,10 +74,10 @@ def post_request(self, uri, pyld, hdrs):
'msg': "Failed POST request to '%s': '%s'" % (uri, to_text(e))}
return {'ret': True, 'resp': resp}

def patch_request(self, uri, pyld, hdrs):
def patch_request(self, uri, pyld):
try:
resp = open_url(uri, data=json.dumps(pyld),
headers=hdrs, method="PATCH",
headers=PATCH_HEADERS, method="PATCH",
url_username=self.creds['user'],
url_password=self.creds['pswd'],
force_basic_auth=True, validate_certs=False,
Expand All @@ -92,10 +97,10 @@ def patch_request(self, uri, pyld, hdrs):
'msg': "Failed PATCH request to '%s': '%s'" % (uri, to_text(e))}
return {'ret': True, 'resp': resp}

def delete_request(self, uri, pyld, hdrs):
def delete_request(self, uri, pyld):
try:
resp = open_url(uri, data=json.dumps(pyld),
headers=hdrs, method="DELETE",
headers=DELETE_HEADERS, method="DELETE",
url_username=self.creds['user'],
url_password=self.creds['pswd'],
force_basic_auth=True, validate_certs=False,
Expand Down Expand Up @@ -302,7 +307,7 @@ def clear_logs(self):
# Check to make sure option is available, otherwise error is ugly
if "Actions" in _data:
if "#LogService.ClearLog" in _data[u"Actions"]:
self.post_request(self.root_uri + _data[u"Actions"]["#LogService.ClearLog"]["target"], {}, HEADERS)
self.post_request(self.root_uri + _data[u"Actions"]["#LogService.ClearLog"]["target"], {})
if response['ret'] is False:
return response
return {'ret': True}
Expand Down Expand Up @@ -468,7 +473,7 @@ def restart_manager_gracefully(self):
action_uri = data[key]["#Manager.Reset"]["target"]

payload = {'ResetType': 'GracefulRestart'}
response = self.post_request(self.root_uri + action_uri, payload, HEADERS)
response = self.post_request(self.root_uri + action_uri, payload)
if response['ret'] is False:
return response
return {'ret': True}
Expand All @@ -491,7 +496,7 @@ def manage_indicator_led(self, command):

if command in payloads.keys():
payload = {'IndicatorLED': payloads[command]}
response = self.patch_request(self.root_uri + chassis_uri, payload, HEADERS)
response = self.patch_request(self.root_uri + chassis_uri, payload)
if response['ret'] is False:
return response
else:
Expand Down Expand Up @@ -534,7 +539,7 @@ def manage_system_power(self, command):
else:
return {'ret': False, 'msg': 'Invalid Command'}

response = self.post_request(self.root_uri + action_uri, payload, HEADERS)
response = self.post_request(self.root_uri + action_uri, payload)
if response['ret'] is False:
return response
result['ret'] = True
Expand Down Expand Up @@ -580,47 +585,47 @@ def add_user(self, user):
roleid = {'RoleId': user['userrole']}
enabled = {'Enabled': True}
for payload in username, pswd, roleid, enabled:
response = self.patch_request(uri, payload, HEADERS)
response = self.patch_request(uri, payload)
if response['ret'] is False:
return response
return {'ret': True}

def enable_user(self, user):
uri = self.root_uri + self.accounts_uri + "/" + user['userid']
payload = {'Enabled': True}
response = self.patch_request(uri, payload, HEADERS)
response = self.patch_request(uri, payload)
if response['ret'] is False:
return response
return {'ret': True}

def delete_user(self, user):
uri = self.root_uri + self.accounts_uri + "/" + user['userid']
payload = {'UserName': ""}
response = self.patch_request(uri, payload, HEADERS)
response = self.patch_request(uri, payload)
if response['ret'] is False:
return response
return {'ret': True}

def disable_user(self, user):
uri = self.root_uri + self.accounts_uri + "/" + user['userid']
payload = {'Enabled': False}
response = self.patch_request(uri, payload, HEADERS)
response = self.patch_request(uri, payload)
if response['ret'] is False:
return response
return {'ret': True}

def update_user_role(self, user):
uri = self.root_uri + self.accounts_uri + "/" + user['userid']
payload = {'RoleId': user['userrole']}
response = self.patch_request(uri, payload, HEADERS)
response = self.patch_request(uri, payload)
if response['ret'] is False:
return response
return {'ret': True}

def update_user_password(self, user):
uri = self.root_uri + self.accounts_uri + "/" + user['userid']
payload = {'Password': user['userpswd']}
response = self.patch_request(uri, payload, HEADERS)
response = self.patch_request(uri, payload)
if response['ret'] is False:
return response
return {'ret': True}
Expand Down Expand Up @@ -778,7 +783,7 @@ def set_bios_default_settings(self):
data = response['data']
reset_bios_settings_uri = data["Actions"]["#Bios.ResetBios"]["target"]

response = self.post_request(self.root_uri + reset_bios_settings_uri, {}, HEADERS)
response = self.post_request(self.root_uri + reset_bios_settings_uri, {})
if response['ret'] is False:
return response
return {'ret': True, 'changed': True, 'msg': "Set BIOS to default settings"}
Expand Down Expand Up @@ -810,7 +815,7 @@ def set_one_time_boot_device(self, bootdevice):
else:
payload = {"Boot": {"BootSourceOverrideTarget": bootdevice}}

response = self.patch_request(self.root_uri + self.systems_uris[0], payload, HEADERS)
response = self.patch_request(self.root_uri + self.systems_uris[0], payload)
if response['ret'] is False:
return response
return {'ret': True}
Expand Down Expand Up @@ -851,7 +856,7 @@ def set_bios_attributes(self, attr):
# Example: bios_attr = {\"name\":\"value\"}
bios_attr = "{\"" + attr['bios_attr_name'] + "\":\"" + attr['bios_attr_value'] + "\"}"
payload = {"Attributes": json.loads(bios_attr)}
response = self.patch_request(self.root_uri + set_bios_attr_uri, payload, HEADERS)
response = self.patch_request(self.root_uri + set_bios_attr_uri, payload)
if response['ret'] is False:
return response
return {'ret': True, 'changed': True, 'msg': "Modified BIOS attribute"}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@

import re
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.redfish_utils import RedfishUtils, HEADERS
from ansible.module_utils.redfish_utils import RedfishUtils
from ansible.module_utils._text import to_native


Expand Down Expand Up @@ -105,8 +105,7 @@ def create_bios_config_job(self):

payload = {"TargetSettingsURI": set_bios_attr_uri}
response = self.post_request(
self.root_uri + self.manager_uri + "/" + jobs,
payload, HEADERS)
self.root_uri + self.manager_uri + "/" + jobs, payload)
if response['ret'] is False:
return response

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
import json
import re
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.redfish_utils import RedfishUtils, HEADERS
from ansible.module_utils.redfish_utils import RedfishUtils
from ansible.module_utils._text import to_native


Expand Down Expand Up @@ -141,7 +141,7 @@ def set_manager_attributes(self, attr):
return {'ret': True, 'changed': False, 'msg': "Manager attribute already set"}

payload = {"Attributes": json.loads(manager_attr)}
response = self.patch_request(self.root_uri + self.manager_uri + "/" + key, payload, HEADERS)
response = self.patch_request(self.root_uri + self.manager_uri + "/" + key, payload)
if response['ret'] is False:
return response
return {'ret': True, 'changed': True, 'msg': "Modified Manager attribute %s" % attr['mgr_attr_name']}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@

import re
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.redfish_utils import RedfishUtils, HEADERS
from ansible.module_utils.redfish_utils import RedfishUtils
from ansible.module_utils._text import to_native


Expand Down