def __init__(self, auth=None, transport=None, config_file=None): if config_file is None: config_file = CONFIG_FILE self.auth = auth self.config_file = config_file self.settings = config.get_config(self.config_file) if transport is None: url = self.settings['softlayer'].get('endpoint_url') if url is not None and '/rest' in url: # If this looks like a rest endpoint, use the rest transport transport = transports.RestTransport( endpoint_url=url, proxy=self.settings['softlayer'].get('proxy'), # prevents an exception incase timeout is a float number. timeout=int( self.settings['softlayer'].getfloat('timeout')), user_agent=consts.USER_AGENT, verify=self.settings['softlayer'].getboolean('verify'), ) else: # Default the transport to use XMLRPC transport = transports.XmlRpcTransport( endpoint_url=url, proxy=self.settings['softlayer'].get('proxy'), timeout=int( self.settings['softlayer'].getfloat('timeout')), user_agent=consts.USER_AGENT, verify=self.settings['softlayer'].getboolean('verify'), ) self.transport = transport
def set_up(self): transport = transports.XmlRpcTransport( endpoint_url='http://endpoint-url', ) self.env.client = SoftLayer.BaseClient( transport=transport, auth=auth.BasicAuthentication('username', 'api-key'))
def test_verify(request, transport_verify, request_verify, expected): request.return_value = get_xmlrpc_response() transport = transports.XmlRpcTransport( endpoint_url='http://something.com', ) req = transports.Request() req.service = 'SoftLayer_Service' req.method = 'getObject' if request_verify is not None: req.verify = request_verify if transport_verify is not None: transport.verify = transport_verify transport(req) request.assert_called_with('POST', 'http://something.com/SoftLayer_Service', data=mock.ANY, headers=mock.ANY, cert=mock.ANY, proxies=mock.ANY, timeout=mock.ANY, verify=expected, auth=None)
def test_no_hostname(self): try: request = transports.Request() request.service = 'SoftLayer_Account' request.method = 'getObject' request.id = 1234 # This test will fail if 'notvalidsoftlayer.com' becomes a thing transport = transports.XmlRpcTransport( endpoint_url='http://notvalidsoftlayer.com', ) transport(request) except SoftLayer.TransportError as ex: self.assertEqual(ex.faultCode, 0) else: self.fail('Transport Error Exception Not Raised')
def test_no_hostname(self): try: request = transports.Request() request.endpoint = 'http://notvalidsoftlayer.com' request.service = 'SoftLayer_Account' request.method = 'getObject' request.id = 1234 # This test will fail if 'notvalidsoftlayer.com' becomes a thing transport = transports.XmlRpcTransport() transport(request) except SoftLayer.SoftLayerAPIError as ex: self.assertIn('not known', str(ex)) self.assertIn('not known', ex.faultString) self.assertEqual(ex.faultCode, 0) else: self.fail('No Exception Raised')
def set_up(self): self.transport = transports.XmlRpcTransport( endpoint_url='http://something.com', ) self.response = requests.Response() list_body = six.b('''<?xml version="1.0" encoding="utf-8"?> <params> <param> <value> <array> <data/> </array> </value> </param> </params>''') self.response.raw = io.BytesIO(list_body) self.response.headers['SoftLayer-Total-Items'] = 10 self.response.status_code = 200
def __init__(self, username=None, api_key=None, endpoint_url=None, timeout=None, auth=None, config_file=None, proxy=None, user_agent=None, transport=None): settings = config.get_client_settings(username=username, api_key=api_key, endpoint_url=endpoint_url, timeout=timeout, auth=auth, proxy=proxy, config_file=config_file) self.auth = settings.get('auth') self.endpoint_url = (settings.get('endpoint_url') or API_PUBLIC_ENDPOINT).rstrip('/') self.transport = transport or transports.XmlRpcTransport() self.timeout = None if settings.get('timeout'): self.timeout = float(settings.get('timeout')) self.proxy = None if settings.get('proxy'): self.proxy = settings.get('proxy') self.user_agent = user_agent
def set_up(self): self.transport = transports.XmlRpcTransport( endpoint_url='http://something.com', ) self.response = mock.MagicMock() self.response.content = '''<?xml version="1.0" encoding="utf-8"?>
def set_up(self): self.transport = transports.XmlRpcTransport( endpoint_url='http://something.com', ) self.response = get_xmlrpc_response()
def create_client_from_env(username=None, api_key=None, endpoint_url=None, timeout=None, auth=None, config_file=None, proxy=None, user_agent=None, transport=None): """Creates a SoftLayer API client using your environment. Settings are loaded via keyword arguments, environemtal variables and config file. :param username: an optional API username if you wish to bypass the package's built-in username :param api_key: an optional API key if you wish to bypass the package's built in API key :param endpoint_url: the API endpoint base URL you wish to connect to. Set this to API_PRIVATE_ENDPOINT to connect via SoftLayer's private network. :param proxy: proxy to be used to make API calls :param integer timeout: timeout for API requests :param auth: an object which responds to get_headers() to be inserted into the xml-rpc headers. Example: `BasicAuthentication` :param config_file: A path to a configuration file used to load settings :param user_agent: an optional User Agent to report when making API calls if you wish to bypass the packages built in User Agent string :param transport: An object that's callable with this signature: transport(SoftLayer.transports.Request) Usage: >>> import SoftLayer >>> client = SoftLayer.create_client_from_env() >>> resp = client['Account'].getObject() >>> resp['companyName'] 'Your Company' """ settings = config.get_client_settings(username=username, api_key=api_key, endpoint_url=endpoint_url, timeout=timeout, proxy=proxy, config_file=config_file) # Default the transport to use XMLRPC if transport is None: transport = transports.XmlRpcTransport( endpoint_url=settings.get('endpoint_url'), proxy=settings.get('proxy'), timeout=settings.get('timeout'), user_agent=user_agent, ) # If we have enough information to make an auth driver, let's do it if auth is None and settings.get('username') and settings.get('api_key'): auth = slauth.BasicAuthentication( settings.get('username'), settings.get('api_key'), ) return BaseClient(auth=auth, transport=transport)
def create_client_from_env(username=None, api_key=None, endpoint_url=None, timeout=None, auth=None, config_file=None, proxy=None, user_agent=None, transport=None, verify=True): """Creates a SoftLayer API client using your environment. Settings are loaded via keyword arguments, environemtal variables and config file. :param username: an optional API username if you wish to bypass the package's built-in username :param api_key: an optional API key if you wish to bypass the package's built in API key :param endpoint_url: the API endpoint base URL you wish to connect to. Set this to API_PRIVATE_ENDPOINT to connect via SoftLayer's private network. :param proxy: proxy to be used to make API calls :param integer timeout: timeout for API requests :param auth: an object which responds to get_headers() to be inserted into the xml-rpc headers. Example: `BasicAuthentication` :param config_file: A path to a configuration file used to load settings :param user_agent: an optional User Agent to report when making API calls if you wish to bypass the packages built in User Agent string :param transport: An object that's callable with this signature: transport(SoftLayer.transports.Request) :param bool verify: decide to verify the server's SSL/TLS cert. DO NOT SET TO FALSE WITHOUT UNDERSTANDING THE IMPLICATIONS. Usage: >>> import SoftLayer >>> client = SoftLayer.create_client_from_env() >>> resp = client.call('Account', 'getObject') >>> resp['companyName'] 'Your Company' """ if config_file is None: config_file = CONFIG_FILE settings = config.get_client_settings(username=username, api_key=api_key, endpoint_url=endpoint_url, timeout=timeout, proxy=proxy, verify=verify, config_file=config_file) if transport is None: url = settings.get('endpoint_url') if url is not None and '/rest' in url: # If this looks like a rest endpoint, use the rest transport transport = transports.RestTransport( endpoint_url=settings.get('endpoint_url'), proxy=settings.get('proxy'), timeout=settings.get('timeout'), user_agent=user_agent, verify=verify, ) else: # Default the transport to use XMLRPC transport = transports.XmlRpcTransport( endpoint_url=settings.get('endpoint_url'), proxy=settings.get('proxy'), timeout=settings.get('timeout'), user_agent=user_agent, verify=verify, ) # If we have enough information to make an auth driver, let's do it if auth is None and settings.get('username') and settings.get('api_key'): # NOTE(kmcdonald): some transports mask other transports, so this is # a way to find the 'real' one real_transport = getattr(transport, 'transport', transport) if isinstance(real_transport, transports.XmlRpcTransport): auth = slauth.BasicAuthentication( settings.get('username'), settings.get('api_key'), ) elif isinstance(real_transport, transports.RestTransport): auth = slauth.BasicHTTPAuthentication( settings.get('username'), settings.get('api_key'), ) return BaseClient(auth=auth, transport=transport, config_file=config_file)
def set_up(self): self.transport = transports.XmlRpcTransport() self.response = mock.MagicMock() self.response.content = '''<?xml version="1.0" encoding="utf-8"?>