2013-02-26 128 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