3
3
# Copyright: (c) 2019, Abhijeet Kasurde <[email protected] >
4
4
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
5
5
6
- from __future__ import (absolute_import , division , print_function )
6
+ from __future__ import absolute_import , division , print_function
7
+
7
8
__metaclass__ = type
8
9
9
- DOCUMENTATION = '''
10
+ DOCUMENTATION = """
10
11
---
11
12
author: Abhijeet Kasurde (Akasurde)
12
13
httpapi : vmware
13
14
short_description: HttpApi Plugin for VMware REST API
14
15
description:
15
16
- This HttpApi plugin provides methods to connect to VMware vCenter over a HTTP(S)-based APIs.
16
- '''
17
+ """
17
18
18
19
import json
19
20
24
25
from ansible .module_utils .connection import ConnectionError
25
26
26
27
BASE_HEADERS = {
27
- ' Content-Type' : ' application/json' ,
28
- ' Accept' : ' application/json' ,
28
+ " Content-Type" : " application/json" ,
29
+ " Accept" : " application/json" ,
29
30
}
30
31
31
32
32
33
class HttpApi (HttpApiBase ):
33
34
def login (self , username , password ):
34
35
if username and password :
35
36
payload = {}
36
- url = ' /rest/com/vmware/cis/session'
37
+ url = " /rest/com/vmware/cis/session"
37
38
response , response_data = self .send_request (url , payload )
38
39
else :
39
- raise AnsibleConnectionFailure ('Username and password are required for login' )
40
+ raise AnsibleConnectionFailure (
41
+ "Username and password are required for login"
42
+ )
40
43
41
44
if response == 404 :
42
45
raise ConnectionError (response_data )
43
46
44
- if not response_data .get ('value' ):
45
- raise ConnectionError ('Server returned response without token info during connection authentication: %s' % response )
47
+ if not response_data .get ("value" ):
48
+ raise ConnectionError (
49
+ "Server returned response without token info during connection authentication: %s"
50
+ % response
51
+ )
46
52
47
- self .connection ._session_uid = "vmware-api-session-id:%s" % response_data ['value' ]
48
- self .connection ._token = response_data ['value' ]
53
+ self .connection ._session_uid = (
54
+ "vmware-api-session-id:%s" % response_data ["value" ]
55
+ )
56
+ self .connection ._token = response_data ["value" ]
49
57
50
58
def logout (self ):
51
- response , dummy = self .send_request ('/rest/com/vmware/cis/session' , None , method = 'DELETE' )
59
+ response , dummy = self .send_request (
60
+ "/rest/com/vmware/cis/session" , None , method = "DELETE"
61
+ )
52
62
53
63
def get_session_uid (self ):
54
64
return self .connection ._session_uid
55
65
56
66
def get_session_token (self ):
57
67
return self .connection ._token
58
68
59
- def send_request (self , path , body_params , method = ' POST' ):
60
- data = json .dumps (body_params ) if body_params else '{}'
69
+ def send_request (self , path , body_params , method = " POST" ):
70
+ data = json .dumps (body_params ) if body_params else "{}"
61
71
62
72
try :
63
73
self ._display_request (method = method )
64
- response , response_data = self .connection .send (path , data , method = method , headers = BASE_HEADERS , force_basic_auth = True )
74
+ response , response_data = self .connection .send (
75
+ path ,
76
+ data ,
77
+ method = method ,
78
+ headers = BASE_HEADERS ,
79
+ force_basic_auth = True ,
80
+ )
65
81
response_value = self ._get_response_value (response_data )
66
82
67
83
return response .getcode (), self ._response_to_json (response_value )
68
84
except AnsibleConnectionFailure as e :
69
- return 404 , ' Object not found'
85
+ return 404 , " Object not found"
70
86
except HTTPError as e :
71
87
return e .code , json .loads (e .read ())
72
88
73
- def _display_request (self , method = 'POST' ):
74
- self .connection .queue_message ('vvvv' , 'Web Services: %s %s' % (method , self .connection ._url ))
89
+ def _display_request (self , method = "POST" ):
90
+ self .connection .queue_message (
91
+ "vvvv" , "Web Services: %s %s" % (method , self .connection ._url )
92
+ )
75
93
76
94
def _get_response_value (self , response_data ):
77
95
return to_text (response_data .getvalue ())
@@ -81,4 +99,4 @@ def _response_to_json(self, response_text):
81
99
return json .loads (response_text ) if response_text else {}
82
100
# JSONDecodeError only available on Python 3.5+
83
101
except ValueError :
84
- raise ConnectionError (' Invalid JSON response: %s' % response_text )
102
+ raise ConnectionError (" Invalid JSON response: %s" % response_text )
0 commit comments