[Pysilhouette-users] 登録したジョブが実行されない

Back to archive index

home nagaoka nagao****@gmail*****
2010年 8月 26日 (木) 02:06:11 JST


お世話になります。ながおかと申します。

pysilhouette を趣味での使用を検討しています。
CentOS-5.5-i386 最小インストール環境 (+追加パッケージ) に、
pysilhouette-0.7.0-1.noarch.rpm をインストールしました。

INSTALL ファイルを参考にコマンドラインからジョブを登録してみたところ、
[CRITICAL] エラーが発生しており正常にジョブが実行されません。

この事象を回避する方法がありましたら、ご教授頂けないでしょうか?
エラーが再現した手順は以下となります。

### ★ CentOS-5.5-i386 最小インストール環境 (+追加パッケージ) の構築
# yum -y upgrade
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# yum -y install vim-common vim-enhanced wget ntpd make traceroute
tree yum-cron ntp
# ntpdata ntp.hde.co.jp
# chkconfig --list | grep :on
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
# reboot

### ★ pysilhouette-0.7.0-1.noarch.rpm のインストール
# wget 'http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fpysilhouette%2F48282%2Fpysilhouette-0.7.0-1.noarch.rpm'
# rpm -ihv pysilhouette-0.7.0-1.noarch.rpm
# touch /var/opt/pysilhouette/pysilhouette.db

### ★ データベースの初期化 (ImportError: No module named pysilhouette.prep)
# python /opt/pysilhouette/bin/psil-cleandb --config
/etc/opt/pysilhouette/silhouette.conf
Traceback (most recent call last):
  File "/opt/pysilhouette/bin/psil-cleandb", line 35, in ?
    from pysilhouette.prep import getopts, readconf, chkopts
ImportError: No module named pysilhouette.prep

### ★ データベースの初期化 (ImportError: No module named sqlalchemy)
# PYTHONPATH=/opt/pysilhouette/lib/python/ python
/opt/pysilhouette/bin/psil-cleandb --config
/etc/opt/pysilhouette/silhouette.conf
Traceback (most recent call last):
  File "/opt/pysilhouette/bin/psil-cleandb", line 36, in ?
    from pysilhouette.db import Database, reload_mappers
  File "/opt/pysilhouette/lib/python/pysilhouette/db/__init__.py", line 33, in ?
    from sqlalchemy import create_engine, MetaData
ImportError: No module named sqlalchemy

### ★ SQLAlchemy-0.6.3 のインストール
# yum -y install curl
# curl -O http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install SQLAlchemy
# ll /usr/lib/python2.4/site-packages/ | grep SQLAlchemy
drwxr-xr-x 4 root root   4096  8月 26 00:56 SQLAlchemy-0.6.3-py2.4.egg

### ★ データベースの初期化 (ImportError: No module named pysqlite2)
# PYTHONPATH=/opt/pysilhouette/lib/python/ python
/opt/pysilhouette/bin/psil-cleandb --config
/etc/opt/pysilhouette/silhouette.conf
Initializing a database error
Traceback (most recent call last):
  File "/opt/pysilhouette/bin/psil-cleandb", line 83, in ?
    sys.exit(main())
  File "/opt/pysilhouette/bin/psil-cleandb", line 62, in main
    echo_pool=True # TODO
  File "/opt/pysilhouette/lib/python/pysilhouette/db/__init__.py",
line 87, in __init__
    self.get_engine(*args, **kwargs)
  File "/opt/pysilhouette/lib/python/pysilhouette/db/__init__.py",
line 92, in get_engine
    self.__engine = create_engine(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.6.3-py2.4.egg/sqlalchemy/engine/__init__.py",
line 244, in create_engine
    return strategy.create(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.6.3-py2.4.egg/sqlalchemy/engine/strategies.py",
line 60, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.6.3-py2.4.egg/sqlalchemy/dialects/sqlite/pysqlite.py",
line 208, in dbapi
    raise e
ImportError: No module named pysqlite2

### ★ pysqlite-2.6.0 のインストール
# yum -y install gcc python-devel sqlite-devel
# easy_install pysqlite
# ll /usr/lib/python2.4/site-packages/ | grep pysqlite
-rw-r--r-- 1 root root 135954  8月 26 01:03 pysqlite-2.6.0-py2.4-linux-i686.egg

### ★ データベースの初期化 (成功)
# PYTHONPATH=/opt/pysilhouette/lib/python/ python
/opt/pysilhouette/bin/psil-cleandb --config
/etc/opt/pysilhouette/silhouette.conf
(中略)
Cleanup Database [OK]

### ★ ホワイトリストの設定
# cat <<EOS> /etc/opt/pysilhouette/whitelist.conf
/bin/touch
/bin/echo
/bin/pwd
EOS

### ★ コマンドの登録 (成功)
# PYTHONPATH=/opt/pysilhouette/lib/python/ python
/opt/pysilhouette/bin/psil-set --config
/etc/opt/pysilhouette/silhouette.conf --action "/bin/touch
/tmp/test_file" --name=hoge --type=serial
2010-08-26 01:16:37,080 INFO sqlalchemy.engine.base.Engine.0x...cb74 BEGIN
2010-08-26 01:16:37,082 INFO sqlalchemy.engine.base.Engine.0x...cb74
INSERT INTO jobgroup (name, uniq_key, finish_command, type, status,
register, created, modified) VALUES (?, ?, ?, ?, ?, ?, datetime(?, ?),
datetime(?, ?))
2010-08-26 01:16:37,082 INFO sqlalchemy.engine.base.Engine.0x...cb74
(u'hoge-0', u'aaaaaaaa-0000-0000-0000-aaaaaaaaaaaa', None, 0, u'101',
None, 'now', 'localtime', 'now', 'localtime')
2010-08-26 01:16:37,086 INFO sqlalchemy.engine.base.Engine.0x...cb74
INSERT INTO job (jobgroup_id, name, "order", action_command,
rollback_command, status, action_exit_code, action_stdout,
action_stderr, rollback_exit_code, rollback_stdout, rollback_stderr,
progress, created, modified) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, datetime(?, ?), datetime(?, ?))
2010-08-26 01:16:37,086 INFO sqlalchemy.engine.base.Engine.0x...cb74
(1, u'hoge-0', 0, u'/bin/touch /tmp/test_file', None, u'101', None,
None, None, None, None, None, 0, 'now', 'localtime', 'now',
'localtime')
2010-08-26 01:16:37,087 INFO sqlalchemy.engine.base.Engine.0x...cb74 COMMIT
Insert JobGroup and Job. num=1 [OK]

### ★ サービスの起動
# /etc/init.d/silhouetted start
Starting silhouetted (Daemon):                             [  OK  ]

### ★ 各種ログファイルの確認
# ll /var/log/pysilhouette
合計 12
-rw-r--r-- 1 root root 2133  8月 26 01:19 application.log
-rw-r--r-- 1 root root    0  8月 26 01:19 error.log
-rw-r--r-- 1 root root    0  8月 26 01:19 sql.log
-rw-rw-rw- 1 root root 1382  8月 26 01:19 stderr.log
-rw-rw-rw- 1 root root 1236  8月 26 01:19 stdout.log

### ★ application.log
# cat /var/log/pysilhouette/application.log
[26/Aug/2010:01:19:11 (JST)] [INFO] [3077] [pysilhouette.silhouette]
[100] Daemon Running!! pid=3077
[26/Aug/2010:01:19:11 (JST)] [INFO] [3077] [pysilhouette.observer]
[143] performer : [start] - pid=3078, count=5/5
[26/Aug/2010:01:19:11 (JST)] [INFO] [3077] [pysilhouette.observer]
[146] scheduler : [start] - pid=3079, count=5/5
[26/Aug/2010:01:19:11 (JST)] [INFO] [3077] [pysilhouette.observer]
[150] asynperformer : [start] - pid=3078, count=5/5
[26/Aug/2010:01:19:11 (JST)] [INFO] [3077] [pysilhouette.observer]
[154] asynscheduler : [start] - pid=3079, count=5/5
[26/Aug/2010:01:19:12 (JST)] [INFO] [3077] [pysilhouette.observer]
[218] 'performer (running) - count=5/5', 'scheduler (running) -
count=5/5', 'asynperformer (running) - count=5/5', 'asynscheduler
(running) - count=5/5'
[26/Aug/2010:01:19:12 (JST)] [INFO] [3078] [pysilhouette.performer]
[65] The fifo file was created. -
file=/tmp/pysilhouette-performer.fifo
[26/Aug/2010:01:19:12 (JST)] [INFO] [3078] [pysilhouette.performer]
[78] The process file was created. - file=/var/run/performerd.pid
[26/Aug/2010:01:19:12 (JST)] [INFO] [3079] [pysilhouette.scheduler]
[78] The process file was created. - file=/var/run/schedulerd.pid
[26/Aug/2010:01:19:12 (JST)] [INFO] [3078] [pysilhouette.performer]
[56] performer : [started]
[26/Aug/2010:01:19:12 (JST)] [INFO] [3079] [pysilhouette.scheduler]
[58] scheduler : [started]
[26/Aug/2010:01:19:12 (JST)] [INFO] [3079] [pysilhouette.scheduler]
[67] Activity Information. - [fifo code=0]
[26/Aug/2010:01:19:12 (JST)] [INFO] [3078] [pysilhouette.performer]
[69] Activity Information. - [fifo_code=0, type=serial,
jobgroup_num=1]
[26/Aug/2010:01:19:12 (JST)] [INFO] [3078] [pysilhouette.performer]
[77] Failed to perform the job group. Exceptions are not expected. -
jobgroup_id=1 : ("'ScopedSession' object has no attribute 'update'",)
[26/Aug/2010:01:19:12 (JST)] [CRITICAL] [3078]
[pysilhouette.performer] [140] System error has occurred. - ("global
name 'logger' is not defined",)
[26/Aug/2010:01:19:12 (JST)] [INFO] [3078] [pysilhouette.performer]
[150] Process file has been deleted.. -
pidfile=/var/run/performerd.pid

### ★ stderr.log
# cat /var/log/pysilhouette/stderr.log
/usr/lib/python2.4/site-packages/SQLAlchemy-0.6.3-py2.4.egg/sqlalchemy/engine/default.py:495:
SAWarning: Unicode type received non-unicode bind param value.
  param.append(processors[key](compiled_params[key]))
Traceback (most recent call last):
  File "/opt/pysilhouette/lib/python/pysilhouette/performer.py", line
75, in process
    w.process()
  File "/opt/pysilhouette/lib/python/pysilhouette/worker.py", line 63,
in process
    jobgroup_update(session, self._m_jg, JOBGROUP_STATUS['RUN']) #
JobGroup UPDATE
  File "/opt/pysilhouette/lib/python/pysilhouette/db/access.py", line
80, in jobgroup_update
    ret = update(session, m_jg)
  File "/opt/pysilhouette/lib/python/pysilhouette/db/__init__.py",
line 156, in wrapper
    func(*args, **kwargs)
  File "/opt/pysilhouette/lib/python/pysilhouette/db/access.py", line
92, in update
    return session.update(model)
AttributeError: 'ScopedSession' object has no attribute 'update'

System error has occurred. - ("global name 'logger' is not defined",)
Traceback (most recent call last):
  File "/opt/pysilhouette/lib/python/pysilhouette/performer.py", line
134, in main
    ret = performer.process() # start!!
  File "/opt/pysilhouette/lib/python/pysilhouette/performer.py", line
88, in process
    logger.error('Failed to change the status of the job group. -
jobgroup_id=%d : %s'
NameError: global name 'logger' is not defined

### ★ stdout.log
# cat /var/log/pysilhouette/stdout.log
[26/Aug/2010:01:19:12] [ERROR] Traceback (most recent call last):
  File "/opt/pysilhouette/lib/python/pysilhouette/performer.py", line
75, in process
    w.process()
  File "/opt/pysilhouette/lib/python/pysilhouette/worker.py", line 63,
in process
    jobgroup_update(session, self._m_jg, JOBGROUP_STATUS['RUN']) #
JobGroup UPDATE
  File "/opt/pysilhouette/lib/python/pysilhouette/db/access.py", line
80, in jobgroup_update
    ret = update(session, m_jg)
  File "/opt/pysilhouette/lib/python/pysilhouette/db/__init__.py",
line 156, in wrapper
    func(*args, **kwargs)
  File "/opt/pysilhouette/lib/python/pysilhouette/db/access.py", line
92, in update
    return session.update(model)
AttributeError: 'ScopedSession' object has no attribute 'update'

[26/Aug/2010:01:19:12] [CRITICAL] global name 'logger' is not defined
[26/Aug/2010:01:19:12] [CRITICAL] Traceback (most recent call last):
  File "/opt/pysilhouette/lib/python/pysilhouette/performer.py", line
134, in main
    ret = performer.process() # start!!
  File "/opt/pysilhouette/lib/python/pysilhouette/performer.py", line
88, in process
    logger.error('Failed to change the status of the job group. -
jobgroup_id=%d : %s'
NameError: global name 'logger' is not defined

なお /etc/opt/pysilhouette/{silhouette.conf,log.conf} には手を加えていません。
他に必要な情報が足りない箇所がありましたら、ご指摘願います。

以上、よろしくお願いいたします。

--
ながおか
<nagao****@gmail*****>




Pysilhouette-users メーリングリストの案内
Back to archive index