2015-11-12 2 views
2

Я хотел бы изменить одно имя свойства («modcluster.proxylist») с SETM командования в кукольный. Мой следующий код не работает. Буду признателен за любую оказанную помощь.Как использовать SETM в кукольный

augeas { "jboss_domain_config": 
      incl =>  "/opt/domain.xml", 
      lens =>  "Xml.lns", 
      context =>  "/files/opt/domain.xml", 
      onlyif =>  "match /files/opt/domain.xml/domain/server-groups/*/system-properties/*/#attribute/name modcluster.proxylist" 
      changes =>  "setm /files/opt/domain.xml/domain/server-groups server-group[.]/system-properties/property[.]/#attribute/value kumaran", 
    } 

Следующий мой исходный XML, который я бы хотел изменить.

<server-group name="ServiceGroupOne" profile="full-ha"> 
    <system-properties> 
      <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/> 
      <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/> 
      <property name="modcluster.lbgroup" value="SearchGroupOne" boot-time="true"/> 
    </system-properties> 
</server-group> 
<server-group name="ServiceGroupTwo" profile="full-ha"> 
    <system-properties> 
      <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/> 
      <property name="modcluster.lbgroup" value="SearchGroupTwo" boot-time="true"/> 
      <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/> 
    </system-properties> 
</server-group> 
<server-group name="ServiceGroupThree" profile="full-ha"> 
    <system-properties> 
      <property name="modcluster.lbgroup" value="CommonSearchGroup" boot-time="true"/> 
      <property name="modcluster.proxylist" value="192.168.79.77:7777" boot-time="true"/> 
      <property name="jboss.default.multicast.address" value="232.0.2.20" boot-time="true"/> 
    </system-properties> 
</server-group> 

ответ

2

Существует немало проблем. Давайте разбираться с ними по одному:

  • кажется domain.xml кода вы предоставите неправильно, так как нет никаких domain и server-groups узлов, как ваш код Кукольного предлагает. Я принимаю это есть еще два уровня вокруг кода, при условии:

    <domain> 
        <server-groups> 
        <!-- the rest of the file --> 
        <server-groups> 
    <domain> 
    
  • нет никакой необходимости устанавливать context при использовании incl и lens, это автоматическая

  • вы поняли на пути setm работы: первый параметр узел узлов, на котором Augeas будет зацикливаться, второй - это подназдел, а третий - значение
  • изменение, которое вы хотите сделать с setm, по своей сути идемпотент, здесь не нужно использовать onlyif.

Вот результат:

augeas { "jboss_domain_config": 
    incl =>  "/tmp/domain.xml", 
    lens =>  "Xml.lns", 
    changes =>  "setm domain/server-groups/server-group system-properties/property[#attribute/name='modcluster.proxylist']/#attribute/value kumaran", 
}