def provider_info(providers, request): """ Introspect provider class and return response what contain: name - provider.name attribute website - provider.website attribute x-headers - list of provider API credentials which user should provide in request headers (parsed from from __init__ method docstrings) supported_methods - list of all methods information which supported by provider, Method information parsed from method docstings """ provider_name = request.args.get('provider_name', '') provider_name = provider_name.upper() providers = get_providers_dict(providers.DRIVERS, providers.Provider) if not provider_name in providers: raise ProviderNotSupportedError(provider=provider_name) driver = providers[provider_name] supported_methods = {} for method_name, method in inspect.getmembers(driver, inspect.ismethod): if method_name.startswith('_'): continue try: driver_method = DriverMethod(driver, method_name) except MethodParsingException, e: logger.info(str(e) + ' ' + driver.name + '.' + method_name) continue supported_methods[method_name] = driver_method.get_description()
def provider_info(providers, request): """ Introspect provider class and return response what contain: name - provider.name attribute website - provider.website attribute x-headers - list of provider API credentials which user should provide in request headers (parsed from from __init__ method docstrings) supported_methods - list of all methods information which supported by provider, Method information parsed from method docstings """ provider_name = request.args.get('provider_name', '') provider_name = provider_name.upper() providers = get_providers_dict(providers.DRIVERS, providers.Provider) if not provider_name in providers: raise ProviderNotSupportedError(provider=provider_name) driver = providers[provider_name] supported_methods = {} for method_name, method in inspect.getmembers(driver, inspect.ismethod): if method_name.startswith('_'): continue try: driver_method = DriverMethod(driver, method_name) except MethodParsingException, e: logger.info(str(e) + ' ' + driver.name + '.' + method_name) continue supported_methods[method_name] = driver_method.get_description()
class FakeDriverTests(unittest2.TestCase): def setUp(self): self.driver_method = DriverMethod(FakeDriver, 'ex_create_fake') def test_get_description(self): data = self.driver_method.get_description() self.assertEqual('ex_create_fake', data['name']) self.assertEqual('teachess volume to node.', data['description']) arguments = data['arguments'] node = {'required': True, 'type': 'str', 'name': 'node_id', 'description': 'ID of the node which should be used'} volume = {'required': True, 'type': 'str', 'name': 'volume', 'description': 'Volume to attach'} device = {'required': True, 'type': 'str', 'name': 'device', 'description': "Where the device is exposed, " "e.g. '/dev/sdb (required)"} extra_dict = {'required': False, 'type': 'dict', 'name': 'extra', 'description': 'Extra attributes (driver specific).'} extra_str = {'required': False, 'type': 'str', 'name': 'extra', 'description': 'Extra attributes (driver specific).'} varg = {'default': 'value', 'required': False, 'type': 'str', 'name': 'varg', 'description': 'with default value'} kwarg = {'required': False, 'type': 'str', 'name': 'kwarg', 'description': 'Keyword argument'} test_args = [node, volume, device, extra_dict, extra_str, varg, kwarg] self.assertEqual(arguments, test_args)
class FakeDriverTests(unittest2.TestCase): def setUp(self): self.driver_method = DriverMethod(FakeDriver, 'ex_create_fake') def test_get_description(self): data = self.driver_method.get_description() self.assertEqual('ex_create_fake', data['name']) self.assertEqual('teachess volume to node.', data['description']) arguments = data['arguments'] node = { 'required': True, 'type': 'str', 'name': 'node_id', 'description': 'ID of the node which should be used' } volume = { 'required': True, 'type': 'str', 'name': 'volume', 'description': 'Volume to attach' } device = { 'required': True, 'type': 'str', 'name': 'device', 'description': "Where the device is exposed, " "e.g. '/dev/sdb (required)" } extra_dict = { 'required': False, 'type': 'dict', 'name': 'extra', 'description': 'Extra attributes (driver specific).' } extra_str = { 'required': False, 'type': 'str', 'name': 'extra', 'description': 'Extra attributes (driver specific).' } varg = { 'default': 'value', 'required': False, 'type': 'str', 'name': 'varg', 'description': 'with default value' } kwarg = { 'required': False, 'type': 'str', 'name': 'kwarg', 'description': 'Keyword argument' } test_args = [node, volume, device, extra_dict, extra_str, varg, kwarg] self.assertEqual(arguments, test_args)