Пример #1
0
def agent_env(env=None, uid=None):
    x = pkconfig.to_environ(
        (
            'pykern.*',
            'sirepo.feature_config.*',
        ),
        exclude_re=pykern.pkdebug.SECRETS_RE,
    )
    env = (env or PKDict()).pksetdefault(**x, ).pksetdefault(
        PYTHONPATH='',
        PYTHONSTARTUP='',
        PYTHONUNBUFFERED='1',
        SIREPO_AUTH_LOGGED_IN_USER=lambda: uid or sirepo.auth.logged_in_user(),
        SIREPO_JOB_VERIFY_TLS=cfg.verify_tls,
        SIREPO_JOB_MAX_MESSAGE_BYTES=cfg.max_message_bytes,
        SIREPO_JOB_PING_INTERVAL_SECS=cfg.ping_interval_secs,
        SIREPO_JOB_PING_TIMEOUT_SECS=cfg.ping_timeout_secs,
        SIREPO_SRDB_ROOT=lambda: sirepo.srdb.root(),
    )
    for k in env.keys():
        assert not pykern.pkdebug.SECRETS_RE.search(k), \
            'unexpected secret key={} match={}'.format(
                k,
                pykern.pkdebug.SECRETS_RE,
            )
    return '\n'.join(("export {}='{}'".format(k, v) for k, v in env.items()))
Пример #2
0
 def sirepo_unit_env(self, compt=None):
     if not compt:
         compt = self
     # Only variable that is required to be in the environment
     e = pkconfig.to_environ(
         ['*'],
         values=PKDict((k, v) for k, v in compt.j2_ctx.items() if k in ('sirepo', 'pykern')),
         # local only values
         exclude_re=r'^sirepo(?:_docker_image|.*_vhost|.*_client_max_body)',
     )
     e.PYTHONUNBUFFERED = '1'
     return e
Пример #3
0
def agent_env(env=None, uid=None):
    env = (env or PKDict()).pksetdefault(**pkconfig.to_environ((
        'pykern.*',
        'sirepo.feature_config.job',
        'sirepo.simulation_db.sbatch_display',
    ))).pksetdefault(
        PYTHONPATH='',
        PYTHONSTARTUP='',
        PYTHONUNBUFFERED='1',
        SIREPO_AUTH_LOGGED_IN_USER=lambda: uid or sirepo.auth.logged_in_user(),
        SIREPO_JOB_VERIFY_TLS=cfg.verify_tls,
        SIREPO_SRDB_ROOT=lambda: sirepo.srdb.root(),
    )
    return '\n'.join(("export {}='{}'".format(k, v) for k, v in env.items()))
Пример #4
0
def agent_env(env=None, uid=None):
    env = (env or PKDict()).pksetdefault(**pkconfig.to_environ((
        'pykern.*',
        'sirepo.feature_config.job',
    ))).pksetdefault(
        PYTHONPATH='',
        PYTHONSTARTUP='',
        PYTHONUNBUFFERED='1',
        SIREPO_AUTH_LOGGED_IN_USER=lambda: uid or sirepo.auth.logged_in_user(),
        SIREPO_JOB_VERIFY_TLS=cfg.verify_tls,
        SIREPO_JOB_MAX_MESSAGE_SIZE=cfg.max_message_size,
        SIREPO_JOB_PING_INTERVAL_SECS=cfg.ping_interval_secs,
        SIREPO_JOB_PING_TIMEOUT_SECS=cfg.ping_timeout_secs,
        SIREPO_SRDB_ROOT=lambda: sirepo.srdb.root(),
    )
    return '\n'.join(("export {}='{}'".format(k, v) for k, v in env.items()))
Пример #5
0
    def _enable_docker(self):
        from rsconf import systemd
        from rsconf.component import docker_registry

        def _env_ok(elem):
            for p in (
                    # TODO(e-carlin): all of auth and smtp is really too much.
                    # We just need auth_methods for checking if the cookies is
                    # valid. But bringing in methods then initializes the methods
                    # so we have to bring in their full config.
                    'SIREPO_AUTH',
                    'SIREPO_COOKIE',
                    'SIREPO_FEATURE_PROPRIETARY_SIM',
                    'SIREPO_SIM_API_JUPYTERHUBLOGIN',
                    'SIREPO_SMTP',
                    'SIREPO_SRDB',
            ):
                if elem[0].startswith(f'{p}'):
                    return True
            return False

        z = self.j2_ctx[self.name]
        systemd.docker_unit_enable(
            self,
            self.j2_ctx,
            cmd="bash -l -c 'jupyterhub -f {}'".format(self.__conf_f),
            env=PKDict(
                filter(
                    _env_ok,
                    self.buildt.get_component('sirepo').sirepo_unit_env(
                        self).items(),
                ),
                **pkconfig.to_environ(
                    ['*'],
                    values=dict(sirepo=dict(feature_config=dict(
                        sim_types=set(('jupyterhublogin', ))), )),
                ),
            ),
            image=docker_registry.absolute_image(self.j2_ctx, z.docker_image),
            run_u=z.run_u,
            volumes=[
                self._jupyterhub_db(),
                self.j2_ctx.sirepo.srdb.root,
            ],
        )