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)
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]
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]
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
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')
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')
def get_omega_from_apikey(cls, *args, **kwargs): from omegaml.client.userconf import get_omega_from_apikey return get_omega_from_apikey(*args, **kwargs)