def test_app_env(self): """ Test the assignment of APP_ENV in settings_local. """ from VECNet import app_env if not self.settings_local_exists: print 'Creating "%s"...' % self.settings_local_path if os.path.exists(self.settings_local_pyc): os.remove(self.settings_local_pyc) # Make sure a .pyc is generated for the .py file we're about to create f = file(self.settings_local_path, 'w') f.write('APP_ENV = "%s"' % app_env.QA) f.close() from VECNet import settings_local if self.settings_local_exists and not hasattr(settings_local, 'APP_ENV'): print 'Assigning settings_local.APP_ENV = "%s"...' % app_env.QA setattr(settings_local, 'APP_ENV', app_env.QA) # Try APP_ENV.is_production class method os.environ.setdefault("DJANGO_SETTINGS_MODULE", "VECNet.settings") from django.conf import settings self.assertTrue(isinstance(settings.APP_ENV, basestring)) self.assertEqual(settings.APP_ENV, app_env.QA) self.assertTrue(app_env.is_qa()) self.assertFalse(app_env.is_production()) self.assertFalse(app_env.is_development())
def submit_jobs(self, reps_per_exec): """ Submits a job to the WinHPC cluster for processing. Returns True if submission was successful, and False if it wasn't. :returns: Boolean """ # check that the run produces a valid manifest validate_manifest(self.run, reps_per_exec) # check if the environment is production or not production = app_env.is_production() # retrieve the ingestion url #TODO have ingestion url always set in settings, and/or have ingestion url be configurable ingest_url = (settings.INGESTION_URL if hasattr(settings, 'INGESTION_URL') else "") #TODO this type checking should be done in settings if not isinstance(ingest_url, (str, unicode)): raise TypeError("INGESTION_URL in settings must be a string or unicode") secrets_dict = { "host": self.cluster.server, "password": self.cluster.password, "username": self.cluster.username } # base_dir = getattr(settings, "JOB_SERVICES_BASE_DIR", None) # status = psc_submit_manifest(str(self.run.id), # self.user.username, # secrets_dict, # use_prod_site=production, # alt_ingest_url=ingest_url, # base_dir=base_dir) if self.run.model_version == emod_id.EMOD15: script_path = getattr(settings, "JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH", None) if script_path is None: raise ImproperlyConfigured("JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD is not configured") elif self.run.model_version == emod_id.EMOD161: # or self.run.model_version == emod_id.EMOD167 script_path = getattr(settings, "JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD_161", None) if script_path is None: raise ImproperlyConfigured("JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD_161 is not configured") elif self.run.model_version == emod_id.EMOD167: # or self.run.model_version == emod_id.EMOD167 script_path = getattr(settings, "JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD_167", None) if script_path is None: raise ImproperlyConfigured("JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD_167 is not configured") elif self.run.model_version == emod_id.EMOD18: # or self.run.model_version == emod_id.EMOD167 script_path = getattr(settings, "JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD_18", None) if script_path is None: raise ImproperlyConfigured("JOB_SERVICES_START_SIMGROUP_SCRIPT_PATH_EMOD_18 is not configured") else: raise RuntimeError("Unsupported model version %s (DimRun %s)" % (self.run.model_version, self.run.id)) status = winhpc_submit(self.run.id, self.user.username, script_path, secrets_dict["host"], secrets_dict["username"], secrets_dict["password"], ingest_url # To be replaced with ALT_INGEST_URL ) if status == -1: logger.error("Run %s was not launched, received -1 from submit method" % self.run.id ) return False logger.info("Run %s was launched successfully" % self.run.id) self.run.time_launched = datetime.datetime.now() self.run.save() return True