@@ -40,6 +40,7 @@ def __init__(self, endpoint_url=None, timeout=None, proxy=None, user_agent=None,
4040 self .verify = verify
4141 self ._client = None
4242 self .history = HistoryPlugin ()
43+ self .soapNS = "http://api.service.softlayer.com/soap/v3.1/"
4344
4445 def __call__ (self , request ):
4546 """Makes a SoftLayer API call against the SOAP endpoint.
@@ -55,29 +56,49 @@ def __call__(self, request):
5556 # MUST define headers like this because otherwise the objectMask header doesn't work
5657 # because it isn't sent in with a namespace.
5758 xsdUserAuth = xsd .Element (
58- '{http://api.softlayer.com/soap/v3/} authenticate' ,
59+ f"{{ { self . soapNS } }} authenticate" ,
5960 xsd .ComplexType ([
60- xsd .Element ('{http://api.service.softlayer.com/soap/v3/ }username' , xsd .String ()),
61- xsd .Element ('{http://api.service.softlayer.com/soap/v3/ }apiKey' , xsd .String ())
61+ xsd .Element (f'{{ { self . soapNS } } }username' , xsd .String ()),
62+ xsd .Element (f'{{ { self . soapNS } } }apiKey' , xsd .String ())
6263 ])
6364 )
65+ factory = client .type_factory (f"{ self .soapNS } " )
66+ theMask = client .get_type (f"{{{ self .soapNS } }}SoftLayer_ObjectMask" )
6467 xsdMask = xsd .Element (
6568 '{http://api.service.softlayer.com/soap/v3.1/}SoftLayer_ObjectMask' ,
69+ factory ['SoftLayer_ObjectMask' ]
70+ )
71+
72+ # Object Filter
73+ filterType = client .get_type (f"{{{ self .soapNS } }}{ request .service } ObjectFilter" )
74+ xsdFilter = xsd .Element (
75+ f"{{{ self .soapNS } }}{ request .service } ObjectFilter" , filterType
76+ )
77+
78+ # Result Limit
79+ xsdResultLimit = xsd .Element (
80+ f"{{{ self .soapNS } }}resultLimit" ,
6681 xsd .ComplexType ([
67- xsd .Element ('mask' , xsd .String ()),
82+ xsd .Element ('limit' , xsd .String ()),
83+ xsd .Element ('offset' , xsd .String ()),
6884 ])
6985 )
7086
87+ test = {"type" :{"keyName" :{"operation" :"BARE_METAL_CPU" }} }
7188 headers = [
7289 xsdMask (mask = request .mask or '' ),
73- xsdUserAuth (username = request .transport_user , apiKey = request .transport_password )
90+ xsdUserAuth (username = request .transport_user , apiKey = request .transport_password ),
91+ xsdResultLimit (limit = 2 , offset = 0 ),
92+ xsdFilter (** request .filter or '' ) # The ** here forces python to treat this dict as properties
7493 ]
7594
7695 pp (headers )
7796 print ("HEADERS ^^^^^" )
7897 method = getattr (client .service , request .method )
79- result = client .service .getObject (_soapheaders = headers )
80- return serialize_object (result )
98+
99+ # result = client.service.getObject(_soapheaders=headers)
100+ result = method (_soapheaders = headers )
101+ return serialize_object (result ['body' ]['getAllObjectsReturn' ])
81102 # result = transport.post(f"{self.endpoint_url}/{request.service}")
82103
83104
0 commit comments