2013-02-26 100 views
12

如果給定的類存在,有沒有辦法檢查清單文件?檢查一個類是否存在

我想要做這樣的事情:

class foo { 
    if exists(Class["foo::${lsbdistcodename}"]) { 
     include foo::${lsbdistcodename} 
    } 
} 

所以我可以輕鬆地添加然後被自動包含分佈狀態/版本的特定類。

回答

12

您應該使用defined而不是exists語句。 下面的片段對我的作品:

class foo { 
    if defined("foo::${lsbdistcodename}") { 
      notify {'defined':}    
      include "foo::${lsbdistcodename}" 
    } 
} 

class foo::precise { 
    notify{'precise':} 
} 

[假設你正在運行的木偶版> 2.6.0]

+1

以及感謝,但將無法正常工作「導致類尚未確定。這是我的問題的重點。我想檢查課程是否存在,我可以包括它。您發佈的代碼根本無法做任何事情。如果這個類沒有包含,那麼這個條件是錯誤的,如果包含它,包含將不會再包含它... – 2013-02-28 03:02:11

+0

不是這樣,請參閱此問題 - http://projects.puppetlabs.com/issues/3490 – LiorH 2013-03-01 19:11:58

+0

不適合我。我跑木偶2.7.18: '如果定義(類[ '共同']){通知( '是')}' 將輸出什麼,而 '包括common' '如果定義( Class''common']){notice('yes')}' outputs'yes' – 2013-03-02 10:22:13