def configure_step(self): """ Handle license file. """ default_lic_env_var = 'PGROUPD_LICENSE_FILE' license_specs = ensure_iterable_license_specs(self.cfg['license_file']) lic_specs, self.license_env_var = find_flexlm_license( custom_env_vars=[default_lic_env_var], lic_specs=license_specs) if lic_specs: if self.license_env_var is None: self.log.info( "Using PGI license specifications from 'license_file': %s", lic_specs) self.license_env_var = default_lic_env_var else: self.log.info("Using PGI license specifications from %s: %s", self.license_env_var, lic_specs) self.license_file = os.pathsep.join(lic_specs) env.setvar(self.license_env_var, self.license_file) else: raise EasyBuildError( "No viable license specifications found; specify 'license_file' or " + "define $PGROUPD_LICENSE_FILE or $LM_LICENSE_FILE")
def configure_step(self): """ Handle license file. """ default_lic_env_var = 'PGROUPD_LICENSE_FILE' license_specs = ensure_iterable_license_specs(self.cfg['license_file']) lic_specs, self.license_env_var = find_flexlm_license( custom_env_vars=[default_lic_env_var], lic_specs=license_specs) if lic_specs: if self.license_env_var is None: self.log.info( "Using PGI license specifications from 'license_file': %s", lic_specs) self.license_env_var = default_lic_env_var else: self.log.info("Using PGI license specifications from %s: %s", self.license_env_var, lic_specs) self.license_file = os.pathsep.join(lic_specs) env.setvar(self.license_env_var, self.license_file) else: self.log.info( "No viable license specifications found, assuming PGI Community Edition..." )
def prepare_step(self, requires_runtime_license=True): """Custom prepare step for IntelBase. Set up the license""" super(IntelBase, self).prepare_step() # Decide if we need a license or not (default is True because of defaults of individual Booleans) self.requires_runtime_license = self.cfg['requires_runtime_license'] and requires_runtime_license if self.requires_runtime_license: default_lic_env_var = 'INTEL_LICENSE_FILE' license_specs = ensure_iterable_license_specs(self.cfg['license_file']) lic_specs, self.license_env_var = find_flexlm_license(custom_env_vars=[default_lic_env_var], lic_specs=license_specs) if lic_specs: if self.license_env_var is None: self.log.info("Using Intel license specifications from 'license_file': %s", lic_specs) self.license_env_var = default_lic_env_var else: self.log.info("Using Intel license specifications from $%s: %s", self.license_env_var, lic_specs) self.license_file = os.pathsep.join(lic_specs) env.setvar(self.license_env_var, self.license_file) # if we have multiple retained lic specs, specify to 'use a license which exists on the system' if len(lic_specs) > 1: self.log.debug("More than one license specs found, using '%s' license activation instead of '%s'", ACTIVATION_EXIST_LIC, self.cfg['license_activation']) self.cfg['license_activation'] = ACTIVATION_EXIST_LIC # $INTEL_LICENSE_FILE should always be set during installation with existing license env.setvar(default_lic_env_var, self.license_file) else: msg = "No viable license specifications found; " msg += "specify 'license_file', or define $INTEL_LICENSE_FILE or $LM_LICENSE_FILE" raise EasyBuildError(msg)
def test_ensure_iterable_license_specs(self): """Test ensure_iterable_license_specs function.""" # Test acceptable inputs self.assertEqual(ensure_iterable_license_specs(None), [None]) self.assertEqual(ensure_iterable_license_specs('foo'), ['foo']) self.assertEqual(ensure_iterable_license_specs(['foo']), ['foo']) self.assertEqual(ensure_iterable_license_specs(['foo', 'bar']), ['foo', 'bar']) self.assertEqual(ensure_iterable_license_specs(('foo', )), ['foo']) self.assertEqual(ensure_iterable_license_specs(('foo', 'bar')), ['foo', 'bar']) # Test unacceptable inputs error_msg = "Unsupported type .* for easyconfig parameter 'license_file'!" self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, 42) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, {'1': 'foo'}) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [None]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [42]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [42, 'foo']) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [['foo']]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [(42, 'foo')]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, (42, )) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, (42, 'foo'))
def configure_step(self): """ Handle license file. """ default_lic_env_var = 'PGROUPD_LICENSE_FILE' license_specs = ensure_iterable_license_specs(self.cfg['license_file']) lic_specs, self.license_env_var = find_flexlm_license(custom_env_vars=[default_lic_env_var], lic_specs=license_specs) if lic_specs: if self.license_env_var is None: self.log.info("Using PGI license specifications from 'license_file': %s", lic_specs) self.license_env_var = default_lic_env_var else: self.log.info("Using PGI license specifications from %s: %s", self.license_env_var, lic_specs) self.license_file = os.pathsep.join(lic_specs) env.setvar(self.license_env_var, self.license_file) else: self.log.info("No viable license specifications found, assuming PGI Community Edition...")
def configure_step(self): """ Handle of license """ default_lic_env_var = 'LM_LICENSE_FILE' license_specs = ensure_iterable_license_specs(self.cfg['license_file']) lic_specs, self.license_env_var = find_flexlm_license(custom_env_vars=[default_lic_env_var], lic_specs=license_specs) if lic_specs: if self.license_env_var is None: self.log.info("Using Totalview license specifications from 'license_file': %s", lic_specs) self.license_env_var = default_lic_env_var else: self.log.info("Using Totalview license specifications from %s: %s", self.license_env_var, lic_specs) self.license_file = os.pathsep.join(lic_specs) env.setvar(self.license_env_var, self.license_file) else: raise EasyBuildError("No viable license specifications found; specify 'license_file' or "+ "define $LM_LICENSE_FILE")
def test_ensure_iterable_license_specs(self): """Test ensure_iterable_license_specs function.""" # Test acceptable inputs self.assertEqual(ensure_iterable_license_specs(None), [None]) self.assertEqual(ensure_iterable_license_specs('foo'), ['foo']) self.assertEqual(ensure_iterable_license_specs(['foo']), ['foo']) self.assertEqual(ensure_iterable_license_specs(['foo', 'bar']), ['foo', 'bar']) self.assertEqual(ensure_iterable_license_specs(('foo',)), ['foo']) self.assertEqual(ensure_iterable_license_specs(('foo', 'bar')), ['foo', 'bar']) # Test unacceptable inputs error_msg = "Unsupported type .* for easyconfig parameter 'license_file'!" self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, 42) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, {'1': 'foo'}) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [None]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [42]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [42, 'foo']) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [['foo']]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, [(42, 'foo')]) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, (42,)) self.assertErrorRegex(EasyBuildError, error_msg, ensure_iterable_license_specs, (42, 'foo'))