2013-02-26 29 views
12

यदि कोई दी गई कक्षा मौजूद है तो मैनिफेस्ट फ़ाइलों में जांच करने का कोई तरीका है?जांचें कि कोई वर्ग मौजूद है

मैं इस तरह कुछ करना चाहता हूँ:

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

तो मैं आसानी से जो फिर स्वचालित रूप से शामिल किए गए हैं distrubution/संस्करण विशिष्ट वर्गों जोड़ सकते हैं।

उत्तर

12

आपको मौजूदा कथन के बजाय परिभाषित का उपयोग करना चाहिए। निम्नलिखित स्निपेट मेरे लिए काम करता है:

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

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

[मानते हुए कि आपके कठपुतली संस्करण> 2.6.0 चला रहे हैं]

+1

खैर धन्यवाद, लेकिन यह काम नहीं करेगा क्योंकि वर्ग अभी तक परिभाषित नहीं है। यह मेरे प्रश्न का पूरा बिंदु है। मैं यह जांचना चाहता हूं कि कक्षा मौजूद है या नहीं और मैं इसे शामिल कर सकता हूं। आपके द्वारा पोस्ट किया गया कोड प्रभावी रूप से कुछ भी नहीं करेगा। यदि कक्षा शामिल नहीं है, तो स्थिति गलत है, और यदि इसे शामिल किया गया है, तो इसमें शामिल नहीं होगा ... –

+0

यह सच नहीं है, इस समस्या को देखें - http://projects.puppetlabs.com/issues/3490 – LiorH

+0

मेरे लिए काम नहीं करता है मैं कठपुतली 2.7.18 चल रहा हूँ: 'अगर परिभाषित (कक्षा [ 'आम']) {नोटिस ('हां')}' इच्छा उत्पादन कुछ भी नहीं है, जबकि 'शामिल common'' अगर परिभाषित (कक्षा ['आम']) {नोटिस ('हां')} ' आउटपुट 'हां' –

संबंधित मुद्दे