Index: [Article Count Order] [Thread]

Date:  Tue, 24 Aug 2004 13:57:30 +0900
From:  Takashi Matsuo <tmatsuo (at mark) 10art-ni.co.jp>
Subject:  [coba-o:00847] Re: System の OID  は決まっている?
To:  coba-o (at mark) bluequartz.org
Message-Id:  <20040824135730.5cfd580b.tmatsuo (at mark) 10art-ni.co.jp>
In-Reply-To:  <412AB61E.7030104 (at mark) alpha.or.jp>
References:  <20040824103115.5c6491a0.tmatsuo (at mark) 10art-ni.co.jp>	<412AB61E.7030104 (at mark) alpha.or.jp>
X-Mail-Count: 00847


松尾です

On Tue, 24 Aug 2004 12:29:34 +0900
Hisao SHIBUYA <shibuya (at mark) alpha.or.jp> wrote:

> 渋谷です.
> 
> snip...
> 
> > 少し調べてパッチを作りました。
> > 
> > ui ディレクトリで
> > patch -p0 < wizard.mod.diff
> > であたります。
> > 
> > 元のソースの該当部分を載せます。
> > 
> > $oid = $cceClient->find('System');
> > 
> > if ( $accept == 'accept' ) {
> >   $cceClient->set($oid, '', array('isLicenseAccepted' => '1'));
> >   $errors = $cceClient->errors();
> > } else {
> >   $cceClient->set($oid, '', array('isLicenseAccepted' => '0'));
> >   $errors = $cceClient->errors();
> >   $errors[] = new Error('[[base-wizard.mustAcceptToUse]]');
> > }
> > 
> > $oid には、find の結果の ARRAY が入っています。
> 
> これですが,普通 System という名前のオブジェクトは 1つしか存在しないは
> ずなんですが.

えっと、問題が起きるマシンでも、System はひとつです。ただ OID
は 6 です。ちなみに、OID 1 は、 Disk オブジェクトです。

find System
104 OBJECT 6
201 OK

$oid はいつも中身がひとつしかない ARRAY で、その一番目の要素が
 1 だったり 6 だったりします。で、その ARRAY をスカラーで評価
すると 偶然 1 になるので、 System の OID が 1 の時は 偶然うまく
いっているのだと思います。

> > $cceClient->set($oid, '', array('isLicenseAccepted' => '1'));
> > ここで System オブジェクトの OID が 1 の時は偶然大丈夫ですが、
> > System オブジェクトの OID が 例えば 6 だったりすると、エラー
> > が出ます。どんな時に System の OID が 1 では無くなるのかは、
> > 検証していません。
> 
> 6 の時にエラーではなく,1 と 6 が存在しているとかではないでしょうか.
> /usr/sausalito/bin/cceclient
> を実行して
> find System
> で結果を見てもらえますか.
> 普通であれば
> find System
> 104 OBJECT 1
> 201 OK
> のように 1 のみが帰ってくると思います.複数ある場合は 104 の行が複数行
> 帰って来ます.

先ほど書けばよかったのですが、これは確認済みです。System は ひとつ
しかなくて、OID が 6 になってます。

> System オブジェクトは cce_construct で作成されます.
> [root@fc1]# /usr/sausalito/bin/cce_construct
> ----- constructing -----
>    /usr/sausalito/constructor/base/system/10_addSystem.pl
> 
> これはアルファベット順に実行されるので,今のところ一番初めに
> 10_addSystem.pl が実行され,System がないと追加します.
> なので,普通であれば,1 に System が追加されると思います.

問題のマシンで /usr/sausalito/bin/cce_construct を実行しても
10_addSystem.pl が 一番始めに実行されています。 
うーん。何故 System が 6 で出来るのでしょうか

-- 
Takashi Matsuo
tmatsuo (at mark) 10art-ni.co.jp