def get_config(cls): provider_conf = client_conf.get_client_settings() if 'SL_SSH_KEY' in os.environ: provider_conf['ssh_key'] = os.environ['SL_SSH_KEY'] if not ('auth' in provider_conf and 'endpoint_url' in provider_conf): raise ConfigError("Missing digital ocean api credentials") return provider_conf
def __init__(self, username=None, api_key=None, endpoint_url=None, timeout=None, auth=None, config_file=None, proxy=None, user_agent=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.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 test_inherit(self): # This tests the inheritting properties of the list of resolvers. # Values should be preferred on earlier resolvers except where their # value is false-ish resolvers = [Mock() for i in range(4)] resolvers[0].return_value = {"timeout": 20} resolvers[1].return_value = {"timeout": 10, "auth": None} resolvers[2].return_value = None resolvers[3].return_value = {"auth": "AUTH HANDLER"} with patch("SoftLayer.config.SETTING_RESOLVERS", resolvers): result = get_client_settings() self.assertEqual(result, {"auth": "AUTH HANDLER", "timeout": 20})
def test_inherit(self): # This tests the inheritting properties of the list of resolvers. # Values should be preferred on earlier resolvers except where their # value is false-ish resolvers = [mock.Mock() for i in range(4)] resolvers[0].return_value = {'timeout': 20} resolvers[1].return_value = {'timeout': 10, 'auth': None} resolvers[2].return_value = None resolvers[3].return_value = {'auth': 'AUTH HANDLER'} with mock.patch('SoftLayer.config.SETTING_RESOLVERS', resolvers): result = config.get_client_settings() self.assertEqual(result, {'auth': 'AUTH HANDLER', 'timeout': 20})
def test_inherit(self): # This tests the inheritting properties of the list of resolvers. # Values should be preferred on earlier resolvers except where their # value is false-ish resolvers = [Mock() for i in range(4)] resolvers[0].return_value = {'timeout': 20} resolvers[1].return_value = {'timeout': 10, 'auth': None} resolvers[2].return_value = None resolvers[3].return_value = {'auth': 'AUTH HANDLER'} with patch('SoftLayer.config.setting_resolvers', resolvers): result = get_client_settings() self.assertEqual(result, {'auth': 'AUTH HANDLER', 'timeout': 20})
def __init__(self, username=None, api_key=None, endpoint_url=None, timeout=None, auth=None, config_file=None, proxy=None, user_agent=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.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 __init__( self, username=None, api_key=None, endpoint_url=None, timeout=None, auth=None, config_file=None, proxy=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.timeout = None if settings.get("timeout"): self.timeout = float(settings.get("timeout")) self.proxy = None if settings.get("proxy"): self.proxy = settings.get("proxy")
def test_resolve_one(self): resolvers = [Mock() for i in range(1)] resolvers[0].return_value = {"auth": "AUTH HANDLER"} with patch("SoftLayer.config.SETTING_RESOLVERS", resolvers): result = get_client_settings() self.assertEqual(result, {"auth": "AUTH HANDLER"})
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' """ 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)
def test_resolve_one(self): resolvers = [mock.Mock() for i in range(1)] resolvers[0].return_value = {'auth': 'AUTH HANDLER'} with mock.patch('SoftLayer.config.SETTING_RESOLVERS', resolvers): result = config.get_client_settings() self.assertEqual(result, {'auth': 'AUTH HANDLER'})
def test_no_resolvers(self): result = config.get_client_settings() self.assertEqual(result, {})
def test_no_resolvers(self): result = get_client_settings() self.assertEqual(result, {})
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 test_resolve_one(self): resolvers = [Mock() for i in range(1)] resolvers[0].return_value = {'auth': 'AUTH HANDLER'} with patch('SoftLayer.config.setting_resolvers', resolvers): result = get_client_settings() self.assertEqual(result, {'auth': 'AUTH HANDLER'})
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)