def test_create(self): with self.assertRaises(ValidationError): env = Environment.create(self.session, 'test-env', config=self.config) env = Environment.create(self.session, 'testenv', config=self.config) keys = {k.replace('paths.', ''): self.config[k] for k in self.config if k.startswith('paths.')} for key, path in keys.iteritems(): if key.startswith('virtualenv'): continue if key.startswith('cgroups'): continue self.log.debug("%s: %s", key, path) self.assertTrue(os.path.isdir(path)) self.session.commit() self.assert_env_paths(env)
def test_create_single_cgroup(self): controllers = self.config['paths.cgroups.controllers'] rel_path = self.config['paths.cgroups.relative_path'] del self.config['paths.cgroups.controllers'] self.config['paths.cgroups.relative_path'] = '/' env = Environment.create(self.session, 'testenv', config=self.config) self.session.commit() self.assert_env_paths(env) #restore options self.config['paths.cgroups.controllers'] = controllers self.config['paths.cgroups.realtive_path'] = rel_path
def test_delete(self): env = Environment.create(self.session, 'testenv', config=self.config) env.delete()
def test_deploy(self): self.import_data() owner = self.session.query(User)\ .filter(User.email == '*****@*****.**').one() theme = self.session.query(Theme)\ .filter(Theme.name == 'uffizi').one() env = Environment.create(self.session, 'testenv', config=self.config) instance = Instance.deploy(self.session, 'www.example.com', owner, env, owner, theme=theme) # vassal config is created only upon session commit self.assertFalse(os.path.exists(instance.paths.vassal_config)) self.session.commit() self.assertTrue(os.path.exists(instance.paths.vassal_config)) # various asserts for consistency with self.assertRaises(NotSupported): instance.domain = 'www.newdomain.com' with self.assertRaises(NotImplementedError): nt = self.session.query(Theme)\ .filter(Theme.name == 'moma').one() instance.theme = nt # test reload os.unlink(instance.paths.vassal_config) instance.reload() self.assertFalse(os.path.exists(instance.paths.vassal_config)) self.session.commit() self.assertTrue(os.path.exists(instance.paths.vassal_config)) self.assertTrue(instance.enabled) # test disable instance.enabled = False self.session.commit() self.assertFalse(os.path.exists(instance.paths.vassal_config)) with self.assertRaises(OperationalError): instance.reload() # disable an already disable instance is a no-op self.assertFalse(instance.enabled) instance.enabled = False self.session.rollback() self.assertFalse(instance.enabled) # test enable instance.enabled = True self.assertFalse(os.path.exists(instance.paths.vassal_config)) self.session.commit() self.assertTrue(os.path.exists(instance.paths.vassal_config)) # enabling an already enabled instance is a no-op self.assertTrue(instance.enabled) instance.enabled = True self.session.rollback() self.assertTrue(instance.enabled) # test change environment newenv = Environment.create(self.session, 'testenv2', config=self.config) with self.assertRaises(OperationalError): instance.environment = newenv self.assertEqual(instance.environment, env) instance.enabled = False self.session.commit() instance.environment = newenv self.assertFalse(hasattr(instance, "_paths")) self.session.commit() self.assertEqual(instance.environment, newenv) instance.enabled = True self.session.commit() # "test" migration: call it at least once :( instance.upgrade_schema('head') # create an archive instance.archive(archive_name='test') p = os.path.join(instance.environment.paths.archives, "test.tar.gz") self.assertTrue(os.path.exists(p)) # test restore and delete with self.assertRaises(OperationalError): instance.delete() with self.assertRaises(OperationalError): instance.restore(archive_name='test') instance.enabled = False self.session.commit() #instance.restore(archive_name='test') instance.delete() self.assertFalse(os.path.exists(instance.paths.dir)) self.session.commit() self.assertFalse(os.path.exists(instance.paths.dir)) # todo assert database is not present """
def create(session, task, name, virtualenv_name=None): env = Environment.create(session, name, virtualenv_name) return env.name