示例#1
0
    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")
示例#2
0
文件: pgi.py 项目: vkarak/production
    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..."
            )
示例#3
0
    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'))