11# Copyright 2021 VMware, Inc.
22# SPDX-License-Identifier: Apache License 2.0
33
4- from __future__ import absolute_import , division , print_function
4+ from __future__ import ( absolute_import , division , print_function )
55
66__metaclass__ = type
77
8- from ansible_collections .vmware .alb .plugins .module_utils .avi_api import ( ApiSession , APIError )
9- import sys
8+ from ansible_collections .vmware .alb .plugins .module_utils .avi_api import ApiSession , \
9+ APIError
1010import logging
1111import time
12-
13- if sys .version_info < (3 , 5 ):
14- pass
15- else :
16- pass
17-
1812from requests import ConnectionError
1913from requests .exceptions import ChunkedEncodingError
2014from ssl import SSLError
2519
2620
2721class CSPApiSession (ApiSession ):
28- CSP_HOST = " console.cloud.vmware.com"
22+ CSP_HOST = ' console.cloud.vmware.com'
2923
30- def __init__ (
31- self ,
32- controller_ip = None ,
33- username = None ,
34- password = None ,
35- token = None ,
36- tenant = None ,
37- tenant_uuid = None ,
38- verify = False ,
39- port = None ,
40- timeout = 60 ,
41- api_version = None ,
42- retry_conxn_errors = True ,
43- data_log = False ,
44- avi_credentials = None ,
45- session_id = None ,
46- csrftoken = None ,
47- lazy_authentication = False ,
48- max_api_retries = None ,
49- csp_host = CSP_HOST ,
50- csp_token = None ,
51- user_hdrs = None ,
52- ):
24+ def __init__ (self , controller_ip = None , username = None , password = None ,
25+ token = None , tenant = None , tenant_uuid = None , verify = False ,
26+ port = None , timeout = 60 , api_version = None ,
27+ retry_conxn_errors = True , data_log = False ,
28+ avi_credentials = None , session_id = None , csrftoken = None ,
29+ lazy_authentication = False , max_api_retries = None , csp_host = CSP_HOST , csp_token = None , user_hdrs = None ):
5330
5431 super (CSPApiSession , self ).__init__ (
55- controller_ip ,
56- username ,
57- password ,
58- token ,
59- tenant ,
60- tenant_uuid ,
61- verify ,
62- port ,
63- timeout ,
64- api_version ,
65- retry_conxn_errors ,
66- data_log ,
67- avi_credentials ,
68- session_id ,
69- csrftoken ,
70- lazy_authentication ,
71- max_api_retries ,
72- csp_host ,
73- csp_token ,
74- user_hdrs ,
75- )
32+ controller_ip , username , password , token ,
33+ tenant , tenant_uuid , verify ,
34+ port , timeout , api_version ,
35+ retry_conxn_errors , data_log ,
36+ avi_credentials , session_id , csrftoken ,
37+ lazy_authentication , max_api_retries , csp_host , csp_token , user_hdrs )
7638 return
7739
7840 def generate_access_token (self ):
7941 """
8042 Generate authentication token from CSP Token
8143 """
8244 body = {}
83- headers = {"Content-Type" : "application/x-www-form-urlencoded" }
45+ headers = {
46+ 'Content-Type' : 'application/x-www-form-urlencoded'
47+ }
8448 if self .avi_credentials .csp_token :
8549 body ["api_token" ] = self .avi_credentials .csp_token
8650 else :
87- raise APIError (
88- "CSP API Token is not provided for csp login %s" % self .csp_prefix
89- )
90- logger .debug (
91- "authenticating using api token %s prefix %s" ,
92- self .avi_credentials .csp_token ,
93- self .csp_prefix ,
94- )
51+ raise APIError ("CSP API Token is not provided for csp login %s" % self .csp_prefix )
52+ logger .debug ('authenticating using api token %s prefix %s' ,
53+ self .avi_credentials .csp_token , self .csp_prefix )
9554 self .cookies .clear ()
9655 err = None
9756 try :
9857 rsp = super ().post (
99- self .csp_prefix + "/am/api/auth/api-tokens/authorize" ,
100- body ,
101- headers = headers ,
102- verify = self .verify ,
103- )
58+ self .csp_prefix + "/am/api/auth/api-tokens/authorize" , body , headers = headers ,
59+ verify = self .verify )
10460
10561 if rsp .status_code == 200 :
10662 self .num_session_retries = 0
107- authorization_token = {
108- "Authorization" : "Bearer %s" % (rsp .json ().get ("access_token" ))
109- }
63+ authorization_token = {"Authorization" : "Bearer %s" % (rsp .json ().get ('access_token' ))}
11064 self .headers .update (authorization_token )
111- logger .debug (
112- "authentication success for user %s" , self .avi_credentials .csp_token
113- )
65+ logger .debug ("authentication success for user %s" ,
66+ self .avi_credentials .csp_token )
11467 return
11568 # Check for bad request and invalid credentials response code
11669 elif rsp .status_code in [401 , 403 ]:
117- logger .error ("Status Code %s msg %s" , rsp .status_code , rsp .text )
118- err = APIError (
119- "Failed: %s Status Code %s msg %s" ,
120- (rsp .url , rsp .status_code , rsp .text ),
121- rsp ,
122- )
70+ logger .error ('Status Code %s msg %s' ,
71+ rsp .status_code , rsp .text )
72+ err = APIError ('Failed: %s Status Code %s msg %s' , (
73+ rsp .url , rsp .status_code , rsp .text ), rsp )
12374 raise err
12475 else :
125- logger .error ("Error status code %s msg %s" , rsp .status_code , rsp .text )
126- err = APIError (
127- "Failed: %s Status Code %s msg %s"
128- % (rsp .url , rsp .status_code , rsp .text ),
129- rsp ,
130- )
76+ logger .error ("Error status code %s msg %s" , rsp .status_code ,
77+ rsp .text )
78+ err = APIError ('Failed: %s Status Code %s msg %s' % (
79+ rsp .url , rsp .status_code , rsp .text ), rsp )
13180 raise err
13281 except (ConnectionError , SSLError , ChunkedEncodingError ) as e :
13382 if not self .retry_conxn_errors :
13483 raise
135- logger .warning (" Connection error retrying %s" , e )
84+ logger .warning (' Connection error retrying %s' , e )
13685 err = e
13786 # comes here only if there was either exception or login was not
13887 # successful
@@ -141,11 +90,8 @@ def generate_access_token(self):
14190 self .num_session_retries += 1
14291 if self .num_session_retries > self .max_session_retries :
14392 self .num_session_retries = 0
144- logger .error (
145- "giving up after %d retries connection failure %s" ,
146- self .max_session_retries ,
147- True ,
148- )
93+ logger .error ("giving up after %d retries connection failure %s" ,
94+ self .max_session_retries , True )
14995 raise err
15096 self .generate_access_token ()
15197 return
0 commit comments