66 :license: MIT, see LICENSE for more details.
77"""
88import logging
9- import re
10- from string import Template
11- from zeep import Client , Settings , Transport , xsd
12- from zeep .helpers import serialize_object
9+ from zeep import Client
10+ from zeep import Settings
11+ from zeep import Transport
12+ from zeep import xsd
13+
1314from zeep .cache import SqliteCache
15+ from zeep .helpers import serialize_object
1416from zeep .plugins import HistoryPlugin
15- from zeep .wsdl .messages .multiref import process_multiref
16-
17-
18- import requests
1917
2018from SoftLayer import consts
2119from SoftLayer import exceptions
2220
23- from .transport import _format_object_mask
24- from .transport import _proxies_dict
25- from .transport import ComplexEncoder
26- from .transport import get_session
27- from .transport import SoftLayerListResult
28-
29- from pprint import pprint as pp
30-
3121
22+ # pylint: disable=too-many-instance-attributes
3223class SoapTransport (object ):
33- """XML-RPC transport ."""
24+ """SoapTransport ."""
3425
3526 def __init__ (self , endpoint_url = None , timeout = None , proxy = None , user_agent = None , verify = True ):
3627
@@ -44,7 +35,7 @@ def __init__(self, endpoint_url=None, timeout=None, proxy=None, user_agent=None,
4435 self .verify = verify
4536 self ._client = None
4637 self .history = HistoryPlugin ()
47- self .soapNS = "http://api.service.softlayer.com/soap/v3.1/"
38+ self .soapns = "http://api.service.softlayer.com/soap/v3.1/"
4839
4940 def __call__ (self , request ):
5041 """Makes a SoftLayer API call against the SOAP endpoint.
@@ -59,31 +50,31 @@ def __call__(self, request):
5950
6051 # print(client.wsdl.dump())
6152 # print("=============== WSDL ==============")
62- # MUST define headers like this because otherwise the objectMask header doesn't work
53+
54+ # Must define headers like this because otherwise the objectMask header doesn't work
6355 # because it isn't sent in with a namespace.
64- xsdUserAuth = xsd .Element (
65- f"{{{ self .soapNS } }}authenticate" ,
56+ xsd_userauth = xsd .Element (
57+ f"{{{ self .soapns } }}authenticate" ,
6658 xsd .ComplexType ([
67- xsd .Element (f'{{{ self .soapNS } }}username' , xsd .String ()),
68- xsd .Element (f'{{{ self .soapNS } }}apiKey' , xsd .String ())
59+ xsd .Element (f'{{{ self .soapns } }}username' , xsd .String ()),
60+ xsd .Element (f'{{{ self .soapns } }}apiKey' , xsd .String ())
6961 ])
7062 )
71- factory = client .type_factory (f"{ self .soapNS } " )
72- theMask = client .get_type (f"{{{ self .soapNS } }}SoftLayer_ObjectMask" )
73- xsdMask = xsd .Element (
74- f"{{{ self .soapNS } }}SoftLayer_ObjectMask" ,
75- factory ['SoftLayer_ObjectMask' ]
63+ # factory = client.type_factory(f"{self.soapns}")
64+ the_mask = client .get_type (f"{{{ self .soapns } }}SoftLayer_ObjectMask" )
65+ xsd_mask = xsd .Element (
66+ f"{{{ self .soapns } }}SoftLayer_ObjectMask" , the_mask
7667 )
7768
7869 # Object Filter
79- filterType = client .get_type (f"{{{ self .soapNS } }}{ request .service } ObjectFilter" )
80- xsdFilter = xsd .Element (
81- f"{{{ self .soapNS } }}{ request .service } ObjectFilter" , filterType
70+ filter_type = client .get_type (f"{{{ self .soapns } }}{ request .service } ObjectFilter" )
71+ xsd_filter = xsd .Element (
72+ f"{{{ self .soapns } }}{ request .service } ObjectFilter" , filter_type
8273 )
8374
8475 # Result Limit
85- xsdResultLimit = xsd .Element (
86- f"{{{ self .soapNS } }}resultLimit" ,
76+ xsd_resultlimit = xsd .Element (
77+ f"{{{ self .soapns } }}resultLimit" ,
8778 xsd .ComplexType ([
8879 xsd .Element ('limit' , xsd .String ()),
8980 xsd .Element ('offset' , xsd .String ()),
@@ -92,54 +83,47 @@ def __call__(self, request):
9283
9384 # Might one day want to support unauthenticated requests, but for now assume user auth.
9485 headers = [
95- xsdUserAuth (username = request .transport_user , apiKey = request .transport_password ),
86+ xsd_userauth (username = request .transport_user , apiKey = request .transport_password ),
9687 ]
9788
9889 if request .limit :
99- headers .append (xsdResultLimit (limit = request .limit , offset = request .offset ))
90+ headers .append (xsd_resultlimit (limit = request .limit , offset = request .offset ))
10091 if request .mask :
101- headers .append (xsdMask (mask = request .mask ))
92+ headers .append (xsd_mask (mask = request .mask ))
10293 if request .filter :
10394 # The ** here forces python to treat this dict as properties
104- headers .append (xsdFilter (** request .filter ))
95+ headers .append (xsd_filter (** request .filter ))
10596
10697 if request .identifier :
107- initParam = f"{ request .service } InitParameters "
108- initParamType = client .get_type (f"{{{ self .soapNS } }}{ initParam } " )
109- xsdInitParam = xsd .Element (
110- f"{{{ self .soapNS } }}{ initParam } " , initParamType
98+ init_param = f"{ request .service } init_parameters "
99+ init_paramtype = client .get_type (f"{{{ self .soapns } }}{ init_param } " )
100+ xsdinit_param = xsd .Element (
101+ f"{{{ self .soapns } }}{ init_param } " , init_paramtype
111102 )
112103 # Might want to check if its an id or globalIdentifier at some point, for now only id.
113- headers .append (xsdInitParam (id = request .identifier ))
104+ headers .append (xsdinit_param (id = request .identifier ))
114105
115- # TODO Add params... maybe
106+ # NEXT Add params... maybe
116107 try :
117108 method = getattr (client .service , request .method )
118109 except AttributeError as ex :
119- message = f"{ request .service } ::{ request .method } () does not exist in { self .soapNS } { request .service } ?wsdl"
110+ message = f"{ request .service } ::{ request .method } () does not exist in { self .soapns } { request .service } ?wsdl"
120111 raise exceptions .TransportError (404 , message ) from ex
121112
122113 result = method (_soapheaders = headers )
123- # result = client.service.getObject(_soapheaders=headers)
124-
125- # process_multiref(result['body']['getAllObjectsReturn'])
126114
127- # print("^^^ RESULT ^^^^^^^")
128-
129- # TODO GET A WAY TO FIND TOTAL ITEMS
130- # print(result['header']['totalItems']['amount'])
131- # print(" ^^ ITEMS ^^^ ")
115+ # NEXT GET A WAY TO FIND TOTAL ITEMS
132116
133117 try :
134- methodReturn = f"{ request .method } Return"
118+ method_return = f"{ request .method } Return"
135119 serialize = serialize_object (result )
136120 if serialize .get ('body' ):
137- return serialize ['body' ][methodReturn ]
121+ return serialize ['body' ][method_return ]
138122 else :
139123 # Some responses (like SoftLayer_Account::getObject) don't have a body?
140124 return serialize
141- except KeyError as e :
142- message = f"Error serializeing response\n { result } \n "
125+ except KeyError as ex :
126+ message = f"Error serializeing response\n { result } \n { ex } "
143127 raise exceptions .TransportError (500 , message )
144128
145129 def print_reproduceable (self , request ):
@@ -149,5 +133,6 @@ def print_reproduceable(self, request):
149133
150134 :param request request: Request object
151135 """
152-
136+ log = logging .getLogger (__name__ )
137+ log .DEBUG (f"{ request .service } ::{ request .method } ()" )
153138 return self .history .last_sent
0 commit comments