5 Replies Latest reply on Oct 7, 2014 7:04 PM by Bill Robinson

    config objects and compliance

      We have always built config objects in the Config Object Dictionary and built compliance rules without an issue.  However I'm now working on a product that is a configuration nightmare.


      Each VM is running ten tomcat JVM's.  So the layout looks something like this.




      When we build these, we have a property dictionary that maps the server and customer fields.  The server fields are fairly static a1-a10, however the customer field can be anything.


      I have attempted to create both a Config Object Configuration file and a Local Configuration Object like this.




      Either way builds without error, however I'm not sure how I would go about implementing these as parts into my Component Template or creating compliance rules for them.


      When this is placed in the Config Object Dictionary, it doesn't show up when live browsing a server because the variables are tied to the component not the server.  When I make it a local config object I can add it as a part, but it gives me options for 25 values when there are only 15 in the config file.  There also appears to be no way to browse the local config object to determine what values map to "value 1, value2, etc".

        • 1. Re: config objects and compliance
          Bill Robinson

          so first the path is wrong - it needs to be nsh style - so



          so once this is in the local config object in the template you should then be able to add it to 'parts' of the template.  then you can include it in browse, compliance, etc.


          for the value list, i forget what the cut off is - it might be 25 - but it will so those columns no matter what.

          • 2. Re: config objects and compliance

            I add it as a local configuration object using the xml grammer file and I can add it to parts as a local configuration object.


            The actual local configuration object is this, the prior was just an example.


            /D/tcserver/vfabric-tc-server-standard-2.9.2.RELEASE/??eCare AppServer.appserver??/conf/logging/??eCare AppServer.customer??/csg-logback-loggerlevelsOverride.xml



            When I attempt to create a compliance rule, I get the following available in the drop down.

            Name (Configuration File)

            Name (Configuration File Entry)

            Name (UI)

            Path (Configuration File)

            Path (Configuration File Entry)

            Value1 as Integer (All OS)

            Value1 as String (All OS)

            . . . . .

            Value25 as Integer (All OS)

            Value25 as String (All OS)


            If I select Value1 (through Value25) as String, I get the message "The value on the left does not match any configuration object, property or configuration object attribute."


            Now if I hard code the path into the Config Object Dictionary, I can live browse the server and see the configuration and view the values for each entry in the XML file.  But I don't want to have to create hundreds of Config Objects.


            So how do I make the local configuration object see the contents of my file?




            Here is the content of the file.



            <property name="Message.loglevel" value="error" />

            <property name="Kiosk.loglevel" value="error" />

            <property name="Message.csg.ecare.acp.presentation.loglevel" value="error" />

            <property name="Debug.csg.ecare.acp.loglevel" value="error" />


            <!-- SLBOS transactions.  -->

            <property name="SLBOS.loglevel" value="error" />


            <!-- ACPx Payment Gateway transactions.  -->

            <property name="org.apache.cxf.services.PaymentGatewayService.loglevel" value="error" />


            <!-- ExactTarget -->

            <property name="org.apache.cxf.services.PartnerAPI.loglevel" value="error" />


            <!-- HttpClient wire log -->

            <property name="org.apache.http.wire.loglevel" value="error" />


            <!-- HttpClient Connection Manger log -->

            <property name="org.apache.http.impl.conn" value="error" />

            <property name="net.sf.ehcache.loglevel" value="error" />

            <property name="org.jgroups.loglevel" value="error" />

            <property name="org.springframework.loglevel" value="error" />

            <property name="org.springframework.integration.loglevel" value="error" />

            <property name="com.rabbitmq.loglevel" value="error" />

            <property name="org.springframework.amqp.loglevel" value="error" />



            • 3. Re: config objects and compliance
              Joe Piotrowski

              If I understand what you're doing, I have a customer that uses custom server properties for this. They'll create (for example) 10 server properties:






              Then they run a script daily that looks for these directories and populates the server properties with them. So when they create their configuration files it uses the server property as a variable:





              Then they can use these Config Files in their Compliance Rules.


              It's not very elegant, but the problem with Config Files are, they are designed to always exist in a specific location, like the Windows hosts file. So this is a clumsy workaround.

              • 4. Re: config objects and compliance

                Thanks, that does make sense.


                I think I've found another semi-clumsy work-around.  We will create 10 config objects using a standard name, then create a "customer" link to the standard name.  I can support 10 config objects opposed to several hundred.


                Thanks for the input!



                • 5. Re: config objects and compliance
                  Bill Robinson

                  you shouldn't need to use server properties, that's a kludge.  so if you have this:

                  /D/tcserver/vfabric-tc-server-standard-2.9.2.RELEASE/??eCare AppServer.appserver??/conf/logging/??eCare AppServer.customer??/csg-logback-loggerlevelsOverride.xml


                  then you need to create a local property instance for each possible combination of the property values and set the values of those properties.  then your discovery condtiion should be:

                  directory /D/tcserver/vfabric-tc-server-standard-2.9.2.RELEASE/??eCare AppServer.appserver??/conf/logging/??eCare AppServer.customer?? exists.


                  this will create one component for each property instance w/ that unique combination of property values.  then you should be able to create the compliance rule for that part.


                  look at this: https://docs.bmc.com/docs/display/public/bsa82/How+to+pass+local+parameter+values+to+a+compliance+remediation+package