def parse_namelist_files_to_create_a_model_run(self, code_version, description, config_dir,
                                                   name, namelist_files, status, user, spinup_in_years):
        """
        Ceate a model run
        :param code_version: the code version object
        :param description: the description fo the model run
        :param config_dir: the configuration directory
        :param name: name of the model run
        :param namelist_files: namelist_files object
        :param status: status the model is to have
        :param user: the user creating the model run
        :param spinup_in_years: the spin up in years, for a science configuration
        :return: a model run
        """
        model_run = ModelRun()
        model_run.name = name
        model_run.user = user
        model_run.code_version = code_version
        model_run.description = description
        model_run.status = status
        model_run.science_configuration_spinup_in_years = spinup_in_years

        model_run.parameter_values = []
        log.info("Creating Model Run For: {0} ({1})".format(model_run.name, config_dir))
        for namelist_file in namelist_files:
            filename = os.path.join(config_dir, namelist_file.filename)
            if os.path.exists(filename):
                log.info("Parsing: %s" % filename)
                nml_dict = self._read_namelist(filename)
                model_run.parameter_values.extend(self._create_parameter_values(namelist_file, nml_dict))
        return model_run
    def test_GIVEN_valid_output_and_model_run_WHEN_get_output_variable_name_THEN_output_variable_returned_(self):
        with session_scope() as session:
            param_val_output = ParameterValue()
            param_val_output.set_value_from_python('gpp_gb')

            parameter_service = ParameterService()
            param_output = parameter_service.get_parameter_by_constant(constants.JULES_PARAM_OUTPUT_VAR, session)
            param_output.parameter_values = [param_val_output]

            model_run = ModelRun()
            model_run.parameter_values = [param_val_output]

            session.add(model_run)
            session.commit()

        var = self.parameter_service.get_output_variable_name(model_run.id, param_val_output.id)
        assert_that(var, is_('gpp_gb'))