@@ -175,7 +175,8 @@ def __init__(self, auth=None, transport=None, config_file=None):
175175 transport = transports .RestTransport (
176176 endpoint_url = url ,
177177 proxy = self .settings ['softlayer' ].get ('proxy' ),
178- timeout = self .settings ['softlayer' ].getint ('timeout' ),
178+ # prevents an exception incase timeout is a float number.
179+ timeout = int (self .settings ['softlayer' ].getfloat ('timeout' )),
179180 user_agent = consts .USER_AGENT ,
180181 verify = self .settings ['softlayer' ].getboolean ('verify' ),
181182 )
@@ -184,7 +185,7 @@ def __init__(self, auth=None, transport=None, config_file=None):
184185 transport = transports .XmlRpcTransport (
185186 endpoint_url = url ,
186187 proxy = self .settings ['softlayer' ].get ('proxy' ),
187- timeout = self .settings ['softlayer' ].getint ('timeout' ),
188+ timeout = int ( self .settings ['softlayer' ].getfloat ('timeout' ) ),
188189 user_agent = consts .USER_AGENT ,
189190 verify = self .settings ['softlayer' ].getboolean ('verify' ),
190191 )
@@ -387,19 +388,25 @@ def authenticate_with_password(self, username, password, security_question_id=No
387388 'username' : username
388389 }
389390
390- response = iam_client .request (
391- 'POST' ,
392- 'https://iam.cloud.ibm.com/identity/token' ,
393- data = data ,
394- headers = headers ,
395- auth = requests .auth .HTTPBasicAuth ('bx' , 'bx' )
396- )
397- if response .status_code != 200 :
398- LOGGER .error ("Unable to login: %s" , response .text )
391+ try :
392+ response = iam_client .request (
393+ 'POST' ,
394+ 'https://iam.cloud.ibm.com/identity/token' ,
395+ data = data ,
396+ headers = headers ,
397+ auth = requests .auth .HTTPBasicAuth ('bx' , 'bx' )
398+ )
399+ if response .status_code != 200 :
400+ LOGGER .error ("Unable to login: %s" , response .text )
399401
400- response .raise_for_status ()
402+ response .raise_for_status ()
403+ tokens = json .loads (response .text )
404+ except requests .HTTPError as ex :
405+ error = json .loads (response .text )
406+ raise exceptions .IAMError (response .status_code ,
407+ error .get ('errorMessage' ),
408+ 'https://iam.cloud.ibm.com/identity/token' )
401409
402- tokens = json .loads (response .text )
403410 self .settings ['softlayer' ]['access_token' ] = tokens ['access_token' ]
404411 self .settings ['softlayer' ]['refresh_token' ] = tokens ['refresh_token' ]
405412
@@ -427,19 +434,26 @@ def authenticate_with_passcode(self, passcode):
427434 'response_type' : 'cloud_iam'
428435 }
429436
430- response = iam_client .request (
431- 'POST' ,
432- 'https://iam.cloud.ibm.com/identity/token' ,
433- data = data ,
434- headers = headers ,
435- auth = requests .auth .HTTPBasicAuth ('bx' , 'bx' )
436- )
437- if response .status_code != 200 :
438- LOGGER .error ("Unable to login: %s" , response .text )
437+ try :
438+ response = iam_client .request (
439+ 'POST' ,
440+ 'https://iam.cloud.ibm.com/identity/token' ,
441+ data = data ,
442+ headers = headers ,
443+ auth = requests .auth .HTTPBasicAuth ('bx' , 'bx' )
444+ )
445+ if response .status_code != 200 :
446+ LOGGER .error ("Unable to login: %s" , response .text )
447+
448+ response .raise_for_status ()
449+ tokens = json .loads (response .text )
439450
440- response .raise_for_status ()
451+ except requests .HTTPError as ex :
452+ error = json .loads (response .text )
453+ raise exceptions .IAMError (response .status_code ,
454+ error .get ('errorMessage' ),
455+ 'https://iam.cloud.ibm.com/identity/token' )
441456
442- tokens = json .loads (response .text )
443457 self .settings ['softlayer' ]['access_token' ] = tokens ['access_token' ]
444458 self .settings ['softlayer' ]['refresh_token' ] = tokens ['refresh_token' ]
445459 a_expire = time .strftime ('%Y-%m-%d %H:%M:%S' , time .localtime (tokens ['expiration' ]))
@@ -483,20 +497,27 @@ def refresh_iam_token(self, r_token, account_id=None, ims_account=None):
483497 data ['account' ] = account_id
484498 data ['ims_account' ] = ims_account
485499
486- response = iam_client .request (
487- 'POST' ,
488- 'https://iam.cloud.ibm.com/identity/token' ,
489- data = data ,
490- headers = headers ,
491- auth = requests .auth .HTTPBasicAuth ('bx' , 'bx' )
492- )
500+ try :
501+ response = iam_client .request (
502+ 'POST' ,
503+ 'https://iam.cloud.ibm.com/identity/token' ,
504+ data = data ,
505+ headers = headers ,
506+ auth = requests .auth .HTTPBasicAuth ('bx' , 'bx' )
507+ )
508+
509+ if response .status_code != 200 :
510+ LOGGER .warning ("Unable to refresh IAM Token. %s" , response .text )
493511
494- if response . status_code != 200 :
495- LOGGER . warning ( "Unable to refresh IAM Token. %s" , response .text )
512+ response . raise_for_status ()
513+ tokens = json . loads ( response .text )
496514
497- response .raise_for_status ()
515+ except requests .HTTPError as ex :
516+ error = json .loads (response .text )
517+ raise exceptions .IAMError (response .status_code ,
518+ error .get ('errorMessage' ),
519+ 'https://iam.cloud.ibm.com/identity/token' )
498520
499- tokens = json .loads (response .text )
500521 a_expire = time .strftime ('%Y-%m-%d %H:%M:%S' , time .localtime (tokens ['expiration' ]))
501522 r_expire = time .strftime ('%Y-%m-%d %H:%M:%S' , time .localtime (tokens ['refresh_token_expiration' ]))
502523 LOGGER .warning ("Tokens retrieved, expires at %s, Refresh expires at %s" , a_expire , r_expire )
0 commit comments