Exemple #1
0
 def test_user_extensions_config(self):
     # check we get default without patching
     from omegaml.util import settings
     from omegaml import _base_config as _real_base_config
     with patch('omegaml.client.userconf.get_user_config_from_api') as mock:
         mock.return_value = {
             'objects': [{
                 'data': {
                     "OMEGA_USER_EXTENSIONS": {
                         "OMEGA_STORE_BACKENDS": {
                             "test.backend":
                             'omegaml.backends.npndarray.NumpyNDArrayBackend'
                         }
                     }
                 }
             }]
         }
         with patch('omegaml._base_config', new=BareObj) as defaults:
             from omegaml.client.userconf import get_omega_from_apikey
             # link callbacks used by get_omega_from_api_key
             _real_base_config.update_from_obj(_real_base_config,
                                               attrs=defaults)
             defaults.update_from_dict = _real_base_config.update_from_dict
             defaults.load_user_extensions = _real_base_config.load_user_extensions
             defaults.load_framework_support = lambda *args, **kwargs: None
             defaults.OMEGA_MY_OWN_SETTING = 'foo'
             om = get_omega_from_apikey('foo', 'bar')
             self.assertIsNotNone(om.defaults.OMEGA_USER_EXTENSIONS)
             self.assertIn('test.backend', om.defaults.OMEGA_STORE_BACKENDS)
             # test that all default values are still there, i.e. config was updated, not replaced
             for real_k, real_v in _real_base_config.OMEGA_STORE_BACKENDS.items(
             ):
                 self.assertIn(real_k, om.defaults.OMEGA_STORE_BACKENDS)
             # restore defaults
         defaults = settings(reload=True)
Exemple #2
0
def setup(userid=None, apikey=None, api_url=None, qualifier=None, bucket=None):
    # from now on, link OmegaCloud implementation as the default
    import omegaml as om
    api_url = api_url or os.environ.get('OMEGA_RESTAPI_URL') or 'https://hub.omegaml.io'
    om.Omega = OmegaCloud
    om.setup = setup
    om.get_omega_for_task = lambda *args, **kwargs: setup(*args, **kwargs)
    om = get_omega_from_apikey(userid, apikey, api_url=api_url, qualifier=qualifier, view=False)
    return om[bucket]
Exemple #3
0
def setup(userid=None, apikey=None, api_url=None, qualifier=None, bucket=None):
    # from now on, link OmegaCloud implementation as the default
    import omegaml as om
    api_url = ensure_api_url(api_url, om.defaults)
    om.Omega = OmegaCloud
    om.get_omega_for_task = lambda task: setup(
        userid=userid, apikey=apikey, qualifier=qualifier, bucket=bucket)
    om = get_omega_from_apikey(userid,
                               apikey,
                               api_url=api_url,
                               qualifier=qualifier,
                               view=False)
    return om[bucket]
Exemple #4
0
def load_om(context):
    """
    This is a safe way to load omegaml according to apphub configuration

    :param context: the omegaml context as passed by the apphub Flask starter
    :return: om
    """
    # load omegaml
    if context:
        om = get_omega_from_apikey(userid=context['OMEGA_USERID'],
                                   apikey=context['OMEGA_APIKEY'],
                                   api_url=context.get('OMEGA_RESTAPI_URL'))
    else:
        import omegaml as om
    return om
Exemple #5
0
 def test_config_from_apikey(self):
     """
     Test an Omega instance can be created from user specific configs
     """
     import omegaml as om
     from omegaml.util import settings
     # check we get default without patching
     defaults = settings()
     setup = om.setup
     with patch.object(defaults, 'OMEGA_MONGO_URL') as mock:
         defaults.OMEGA_MONGO_URL = 'foo'
         om.setup()
         self.assertEqual(om.datasets.mongo_url, 'foo')
     # reset om.datasets to restored defaults
     setup()
     self.assertNotEqual(om.datasets.mongo_url, 'foo')
     # now test we can change the default through config
     # we patch the actual api call to avoid having to set up the user db
     # the objective here is to test get_omega_from_apikey
     with patch('omegaml.client.userconf.get_user_config_from_api') as mock:
         mock.return_value = {
             'objects': [
                {
                     'data': {
                         'OMEGA_MONGO_URL': 'updated-foo'
                     }
                 }
             ]
         }
         with patch.object(defaults, 'OMEGA_MONGO_URL') as mock:
             from omegaml.client.userconf import get_omega_from_apikey
             defaults.OMEGA_MONGO_URL = 'foo'
             om.setup()
             self.assertEqual(om.datasets.mongo_url, 'foo')
             om = get_omega_from_apikey('foo', 'bar')
             self.assertEqual(om.datasets.mongo_url, 'updated-foo')
     setup()
     self.assertNotEqual(om.datasets.mongo_url, 'foo')
Exemple #6
0
 def test_config_from_apikey(self):
     """
     Test an Omega instance can be created from user specific configs
     """
     import omegaml as om
     from omegaml.util import settings
     # check we get default without patching
     from omegaml import _base_config as _real_base_config
     with patch('omegaml._base_config', new=BareObj) as defaults:
         # link callbacks used by get_omega_from_api_key
         _real_base_config.update_from_obj(_real_base_config,
                                           attrs=defaults)
         defaults.update_from_dict = _real_base_config.update_from_dict
         defaults.load_user_extensions = lambda *args, **kwargs: None
         defaults.load_framework_support = lambda *args, **kwargs: None
         setup = om.setup
         defaults.MY_OWN_SETTING = 'foo'
         settings(reload=True)
         om = om.setup()
         self.assertEqual(om.defaults.MY_OWN_SETTING, 'foo')
         # reset om.datasets to restored defaults
         om = setup()
         self.assertNotEqual(om.datasets.mongo_url, 'foo')
     # now test we can change the default through config
     # we patch the actual api call to avoid having to set up the user db
     # the objective here is to test get_omega_from_apikey
     with patch('omegaml.client.userconf.get_user_config_from_api') as mock:
         mock.return_value = {
             'objects': [{
                 'data': {
                     'OMEGA_MONGO_URL': 'updated-foo',
                     'OMEGA_MY_OWN_SETTING': 'updated-foo',
                     'OMEGA_CELERY_CONFIG': {
                         'TEST_SETTING': 'pickle',
                     }
                 }
             }]
         }
         with patch('omegaml._base_config', new=BareObj) as defaults:
             from omegaml.client.userconf import get_omega_from_apikey
             # link callbacks used by get_omega_from_api_key
             _real_base_config.update_from_obj(_real_base_config,
                                               attrs=defaults)
             defaults.update_from_dict = _real_base_config.update_from_dict
             defaults.load_user_extensions = lambda *args, **kwargs: None
             defaults.load_framework_support = lambda *args, **kwargs: None
             defaults.OMEGA_MY_OWN_SETTING = 'foo'
             om = get_omega_from_apikey('foo', 'bar')
             self.assertEqual(om.defaults.OMEGA_MY_OWN_SETTING,
                              'updated-foo')
             self.assertEqual(om.datasets.mongo_url, 'updated-foo')
             self.assertEqual(
                 om.defaults.OMEGA_CELERY_CONFIG['TEST_SETTING'], 'pickle')
             # test that all default values are still there, i.e. the OMEGA_CELERY_CONFIG was updated, not replaced
             for real_k, real_v in _real_base_config.OMEGA_CELERY_CONFIG.items(
             ):
                 self.assertIn(real_k, om.defaults.OMEGA_CELERY_CONFIG)
     # restore defaults
     defaults = settings(reload=True)
     om = setup()
     self.assertNotEqual(om.datasets.mongo_url, 'foo')
Exemple #7
0
 def get_omega_from_apikey(cls, *args, **kwargs):
     from omegaml.client.userconf import get_omega_from_apikey
     return get_omega_from_apikey(*args, **kwargs)