Example #1
0
 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
Example #2
0
    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
Example #3
0
 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 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})
Example #5
0
 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})
Example #7
0
    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
Example #8
0
    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"})
Example #10
0
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'})
Example #12
0
 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'})
Example #13
0
 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, {})
Example #15
0
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'})
Example #17
0
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)