Skip to content

Commit

Permalink
Merge branch 'master' into failed_task_capability
Browse files Browse the repository at this point in the history
  • Loading branch information
sushanthakumar authored Oct 15, 2021
2 parents a70d897 + de5c139 commit 7f00b57
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 69 deletions.
4 changes: 3 additions & 1 deletion delfin/drivers/dell_emc/unity/alert_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,11 @@ def parse_queried_alerts(self, alert_model_list, alert_dict, query_para):
alert_model['description'] = content.get('description')
alert_model['resource_type'] = resource_type
alert_model['location'] = location
alert_model_list.append(alert_model)
alert_model['match_key'] = hashlib.md5(
content.get('message').encode()).hexdigest()
if alert_model['severity'] == 'Informational':
continue
alert_model_list.append(alert_model)
except Exception as e:
LOG.error(e)
err_msg = "Failed to build alert model as some attributes " \
Expand Down
2 changes: 2 additions & 0 deletions delfin/drivers/dell_emc/unity/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.

DEFAULT_TIMEOUT = 10
ALERT_TIMEOUT = 20
TRAP_DESC = {
"1:127486a": ["WARNING", "ALRT_LCC_FW_UPGRADE_FAILED",
"The link control card (LCC) will continue to function with "
Expand Down
56 changes: 37 additions & 19 deletions delfin/drivers/dell_emc/unity/rest_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

from delfin import cryptor
from delfin import exception
from delfin.drivers.dell_emc.unity import consts
from delfin.drivers.utils.rest_client import RestClient

LOG = logging.getLogger(__name__)
Expand Down Expand Up @@ -56,14 +57,12 @@ def login(self):
"""Login dell_emc unity storage array."""
try:
with self.session_lock:
data = {}
if self.session is None:
self.init_http_head()
self.session.headers.update({"X-EMC-REST-CLIENT": "true"})
self.session.auth = requests.auth.HTTPBasicAuth(
self.rest_username, cryptor.decode(self.rest_password))
res = self.call_with_token(
RestHandler.REST_AUTH_URL, data, 'GET')
res = self.call_with_token(RestHandler.REST_AUTH_URL)
if res.status_code == 200:
self.session.headers[RestHandler.AUTH_KEY] = \
cryptor.encode(res.headers[RestHandler.AUTH_KEY])
Expand All @@ -81,44 +80,47 @@ def login(self):
LOG.error("Login error: %s", six.text_type(e))
raise e

def call_with_token(self, url, data, method):
def call_with_token(self, url, data=None, method='GET',
calltimeout=consts.DEFAULT_TIMEOUT):
auth_key = None
if self.session:
auth_key = self.session.headers.get(RestHandler.AUTH_KEY, None)
if auth_key:
self.session.headers[RestHandler.AUTH_KEY] \
= cryptor.decode(auth_key)
res = self.do_call(url, data, method)
res = self.do_call(url, data, method, calltimeout)
if auth_key:
self.session.headers[RestHandler.AUTH_KEY] = auth_key
return res

def logout(self):
try:
if self.san_address:
self.call(RestHandler.REST_LOGOUT_URL, method='POST')
self.call(RestHandler.REST_LOGOUT_URL, None, 'POST')
if self.session:
self.session.close()
except Exception as e:
err_msg = "Logout error: %s" % (six.text_type(e))
LOG.error(err_msg)
raise e

def get_rest_info(self, url, data=None, method='GET'):
def get_rest_info(self, url, data=None, method='GET',
calltimeout=consts.DEFAULT_TIMEOUT):
result_json = None
res = self.call(url, data, method)
res = self.call(url, data, method, calltimeout)
if res.status_code == 200:
result_json = res.json()
return result_json

def call(self, url, data=None, method=None):
def call(self, url, data=None, method='GET',
calltimeout=consts.DEFAULT_TIMEOUT):
try:
res = self.call_with_token(url, data, method)
res = self.call_with_token(url, data, method, calltimeout)
if res.status_code == 401:
LOG.error("Failed to get token, status_code:%s,error_mesg:%s" %
(res.status_code, res.text))
self.login()
res = self.call_with_token(url, data, method)
res = self.call_with_token(url, data, method, calltimeout)
elif res.status_code == 503:
raise exception.InvalidResults(res.text)
return res
Expand Down Expand Up @@ -167,7 +169,18 @@ def get_all_alerts(self, page_number):
'messageId,message,description,'
'descriptionId,state',
page_number)
result_json = self.get_rest_info(url)
result_json = self.get_rest_info(
url, None, 'GET', consts.ALERT_TIMEOUT)
return result_json

def get_all_alerts_without_state(self, page_number):
url = '%s?%s&page=%s' % (RestHandler.REST_ALERTS_URL,
'fields=id,timestamp,severity,component,'
'messageId,message,description,'
'descriptionId',
page_number)
result_json = self.get_rest_info(
url, None, 'GET', consts.ALERT_TIMEOUT)
return result_json

def remove_alert(self, alert_id):
Expand All @@ -180,16 +193,15 @@ def remove_alert(self, alert_id):
def get_all_controllers(self):
url = '%s?%s' % (RestHandler.REST_CONTROLLER_URL,
'fields=id,name,health,model,slotNumber,'
'emcPartNumber,emcSerialNumber,manufacturer,'
'memorySize')
'manufacturer,memorySize')
result_json = self.get_rest_info(url)
return result_json

def get_all_disks(self):
url = '%s?%s' % (RestHandler.REST_DISK_URL,
'fields=id,name,health,model,slotNumber,'
'manufacturer,version,emcSerialNumber,wwn'
'emcPartNumber,rpm,size,diskGroup')
'manufacturer,version,emcSerialNumber,wwn,'
'rpm,size,diskGroup,diskTechnology')
result_json = self.get_rest_info(url)
return result_json

Expand All @@ -203,7 +215,7 @@ def get_all_fcports(self):
def get_all_ethports(self):
url = '%s?%s' % (RestHandler.REST_ETHPORT_URL,
'fields=id,name,health,portNumber,storageProcessor,'
'speed,isLinkUp,macAddress,maxMtu')
'speed,isLinkUp,macAddress')
result_json = self.get_rest_info(url)
return result_json

Expand All @@ -221,6 +233,13 @@ def get_all_filesystems(self):
result_json = self.get_rest_info(url)
return result_json

def get_all_filesystems_without_flr(self):
url = '%s?%s' % (RestHandler.REST_FILESYSTEM_URL,
'fields=id,name,health,sizeAllocated,accessPolicy,'
'sizeTotal,sizeUsed,isThinEnabled,pool')
result_json = self.get_rest_info(url)
return result_json

def get_all_nfsshares(self):
url = '%s?%s' % (RestHandler.REST_NFSSHARE_URL,
'fields=id,filesystem,name,path')
Expand Down Expand Up @@ -249,7 +268,6 @@ def get_all_userquotas(self):

def get_quota_configs(self):
url = '%s?%s' % (RestHandler.REST_QUOTACONFIG_URL,
'fields=id,filesystem,treeQuota,quotaPolicy,'
'isUserQuotaEnabled,isAccessDenyEnabled')
'fields=id,filesystem,treeQuota,quotaPolicy')
result_json = self.get_rest_info(url)
return result_json
Loading

0 comments on commit 7f00b57

Please sign in to comment.