1- # Copyright (c) 2020 Dell Inc. or its subsidiaries.
1+ # Copyright (c) 2024 Dell Inc. or its subsidiaries.
22# All Rights Reserved.
33#
44# Licensed under the Apache License, Version 2.0 (the "License"); you may
2121from PyPowerFlex import exceptions
2222from PyPowerFlex import utils
2323
24-
2524requests .packages .urllib3 .disable_warnings (InsecureRequestWarning )
2625LOG = logging .getLogger (__name__ )
2726
2827
2928class Request :
29+ GET = "get"
30+
3031 def __init__ (self , token , configuration ):
3132 self .token = token
3233 self .configuration = configuration
@@ -60,17 +61,24 @@ def verify_certificate(self):
6061 verify_certificate = self .configuration .certificate_path
6162 return verify_certificate
6263
64+ def get_auth_headers (self , request_type = None ):
65+ if request_type == self .GET :
66+ return {'Authorization' : 'Bearer {0}' .format (self .token .get ())}
67+ return {'Authorization' : 'Bearer {0}' .format (self .token .get ()),
68+ 'content-type' : 'application/json' }
69+
6370 def send_get_request (self , url , ** url_params ):
6471 request_url = self .base_url + url .format (** url_params )
6572 version = self .login ()
66- r = requests .get (request_url ,
67- auth = (
68- self .configuration .username ,
69- self .token .get ()
70- ),
71- verify = self .verify_certificate ,
72- timeout = self .configuration .timeout )
73-
73+ request_params = {'url' : request_url ,
74+ 'headers' : self .get_auth_headers (request_type = self .GET ),
75+ 'verify' : self .verify_certificate ,
76+ 'timeout' : self .configuration .timeout }
77+ if utils .is_version_3 (version ):
78+ request_params ['auth' ] = (self .configuration .username ,
79+ self .token .get ())
80+ request_params ['headers' ] = None
81+ r = requests .get (** request_params )
7482 self .logout (version )
7583 response = r .json ()
7684 return r , response
@@ -117,18 +125,18 @@ def send_mdm_cluster_post_request(self, url, params=None, **url_params):
117125 # To perform login based on the API version
118126 def login (self ):
119127 version = self .get_api_version ()
120- if utils .check_version (version = version ):
121- self ._appliance_login ()
122- else :
128+ if utils .is_version_3 (version = version ):
123129 self ._login ()
130+ else :
131+ self ._appliance_login ()
124132 return version
125133
126134 # To perform logout based on the API version
127135 def logout (self , version ):
128- if utils .check_version (version = version ):
129- self ._appliance_logout ()
130- else :
136+ if utils .is_version_3 (version = version ):
131137 self ._logout ()
138+ else :
139+ self ._appliance_logout ()
132140
133141 # Get the Current API version
134142 def get_api_version (self ):
@@ -165,12 +173,8 @@ def _appliance_login(self):
165173 # API logout method for 4.0 and above.
166174 def _appliance_logout (self ):
167175 request_url = self .auth_url + '/logout'
168- token = self .token .get ()
169- headers = {'Authorization' : 'Bearer {0}' .format (token ),
170- 'content-type' : 'application/json'
171- }
172176 data = {'refresh_token' : '{0}' .format (self .__refresh_token )}
173- r = requests .post (request_url , headers = headers , json = data ,
177+ r = requests .post (request_url , headers = self . get_auth_headers () , json = data ,
174178 verify = self .verify_certificate ,
175179 timeout = self .configuration .timeout
176180 )
@@ -184,20 +188,21 @@ def _appliance_logout(self):
184188
185189 def _login (self ):
186190 request_url = self .base_url + '/login'
187-
188- r = requests .get (request_url ,
189- auth = (
190- self .configuration .username ,
191- self .configuration .password
192- ),
193- verify = self .verify_certificate ,
194- timeout = self .configuration .timeout )
195- if r .status_code != requests .codes .ok :
196- exc = exceptions .PowerFlexFailQuerying ('token' )
197- LOG .error (exc .message )
198- raise exc
199- token = r .json ()
200- self .token .set (token )
191+ try :
192+ r = requests .get (request_url ,
193+ auth = (
194+ self .configuration .username ,
195+ self .configuration .password
196+ ),
197+ verify = self .verify_certificate ,
198+ timeout = self .configuration .timeout )
199+ r .raise_for_status ()
200+ token = r .json ()
201+ self .token .set (token )
202+ except requests .exceptions .RequestException as e :
203+ error_msg = f'Login failed with error:{ e .response .content } ' if e .response else f'Login failed with error:{ str (e )} '
204+ LOG .error (error_msg )
205+ raise Exception (error_msg )
201206
202207 def _logout (self ):
203208 token = self .token .get ()
@@ -226,6 +231,9 @@ class EntityRequest(Request):
226231 base_object_url = '/instances/{entity}/action/{action}'
227232 query_mdm_cluster_url = '/instances/{entity}/queryMdmCluster'
228233 list_statistics_url = '/types/{entity}/instances/action/{action}'
234+ service_template_url = '/V1/ServiceTemplate'
235+ managed_device_url = '/V1/ManagedDevice'
236+ deployment_url = '/V1/Deployment'
229237 entity_name = None
230238
231239 @property
0 commit comments