<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Automation of partial config load from xml in Next-Generation Firewall Discussions</title>
    <link>https://live.paloaltonetworks.com/t5/next-generation-firewall/automation-of-partial-config-load-from-xml/m-p/525487#M715</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;TL;DR : I use PA-VM 10.0.4 and paloaltonetworks.panos 2.12.2 galaxy ansible modules. Do you know a way to automate a partial config load from xml ? Ideally using ansible but maybe using API or python ? I tried several things with ansible, none of them are working.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ultimately I'd like to automate the use of this command, which is OK with CLI :&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;load config partial from-xpath /config/devices/entry[@name="localhost.localdomain"]/vsys/entry[@name="vsys1"] to-xpath /config/devices/entry[@name="localhost.localdomain"]/vsys/entry[@name="vsys1"] mode replace from capirca.xml&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;Let's consider this command first, which is also OK with CLI : &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;load config partial mode replace from capirca.xml&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;I tried to automate using ansible. The &lt;A href="https://paloaltonetworks.github.io/pan-os-ansible/modules/panos_loadcfg_module.html" target="_self"&gt;Ansible panos_loadcfg module&lt;/A&gt; does not allow partial config load.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;So I tried this task using ansible :&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;    - name: load configuration
      paloaltonetworks.panos.panos_op:
        provider: "{{ palo_provider }}"
        cmd: 'load config partial mode replace from capirca.xml'
        cmd_is_xml: false&lt;/LI-CODE&gt;
&lt;P&gt;I get this Error even though the command is OK using CLI : &lt;STRONG&gt;load config partial mode replace from \"capirca.xml\" : load -&amp;gt; config -&amp;gt; partial -&amp;gt; mode is invalid&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;The full traceback is:
  File "/tmp/ansible_paloaltonetworks.panos.panos_op_payload_toh3va6v/ansible_paloaltonetworks.panos.panos_op_payload.zip/ansible_collections/paloaltonetworks/panos/plugins/modules/panos_op.py", line 186, in main
  File "/home/r0m/.local/lib/python3.9/site-packages/panos/firewall.py", line 242, in op
    return super(Firewall, self).op(
  File "/home/r0m/.local/lib/python3.9/site-packages/panos/base.py", line 4047, in op
    element = self.xapi.op(cmd, vsys, False, extra_qs, retry_on_peer=retry_on_peer)
  File "/home/r0m/.local/lib/python3.9/site-packages/panos/base.py", line 3899, in method
    raise the_exception
fatal: [fw-test]: FAILED! =&amp;gt; {
    "changed": false,
    "invocation": {
        "module_args": {
            "api_key": null,
            "cmd": "load config partial mode replace from capirca.xml",
            "cmd_is_xml": false,
            "ignore_disconnect": null,
            "ip_address": null,
            "password": null,
            "port": 443,
            "provider": {
                "api_key": null,
                "ip_address": "fw-test.local.r0.me",
                "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                "port": 443,
                "serial_number": null,
                "username": "admin"
            },
            "username": "admin",
            "vsys": "vsys1"
        }
    },
    "msg": "Failed to run command : load config partial mode replace from \"capirca.xml\" :  load -&amp;gt; config -&amp;gt; partial -&amp;gt; mode is invalid"&lt;/LI-CODE&gt;
&lt;P&gt;It's worth noting that this command is working. Unfortunately, I really need a partial load.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;- name: load configuration
      paloaltonetworks.panos.panos_op:
        provider: "{{ palo_provider }}" 
        cmd: 'load config from capirca.xml'
        cmd_is_xml: false&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;Will anyone be able to help me with partial config load automation ?&lt;/P&gt;
&lt;P&gt;Regards !&lt;/P&gt;
&lt;P&gt;Romain&lt;/P&gt;</description>
    <pubDate>Thu, 29 Dec 2022 18:07:16 GMT</pubDate>
    <dc:creator>r000m5</dc:creator>
    <dc:date>2022-12-29T18:07:16Z</dc:date>
    <item>
      <title>Automation of partial config load from xml</title>
      <link>https://live.paloaltonetworks.com/t5/next-generation-firewall/automation-of-partial-config-load-from-xml/m-p/525487#M715</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;TL;DR : I use PA-VM 10.0.4 and paloaltonetworks.panos 2.12.2 galaxy ansible modules. Do you know a way to automate a partial config load from xml ? Ideally using ansible but maybe using API or python ? I tried several things with ansible, none of them are working.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ultimately I'd like to automate the use of this command, which is OK with CLI :&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;load config partial from-xpath /config/devices/entry[@name="localhost.localdomain"]/vsys/entry[@name="vsys1"] to-xpath /config/devices/entry[@name="localhost.localdomain"]/vsys/entry[@name="vsys1"] mode replace from capirca.xml&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;Let's consider this command first, which is also OK with CLI : &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;load config partial mode replace from capirca.xml&lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN&gt;I tried to automate using ansible. The &lt;A href="https://paloaltonetworks.github.io/pan-os-ansible/modules/panos_loadcfg_module.html" target="_self"&gt;Ansible panos_loadcfg module&lt;/A&gt; does not allow partial config load.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;So I tried this task using ansible :&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;    - name: load configuration
      paloaltonetworks.panos.panos_op:
        provider: "{{ palo_provider }}"
        cmd: 'load config partial mode replace from capirca.xml'
        cmd_is_xml: false&lt;/LI-CODE&gt;
&lt;P&gt;I get this Error even though the command is OK using CLI : &lt;STRONG&gt;load config partial mode replace from \"capirca.xml\" : load -&amp;gt; config -&amp;gt; partial -&amp;gt; mode is invalid&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;The full traceback is:
  File "/tmp/ansible_paloaltonetworks.panos.panos_op_payload_toh3va6v/ansible_paloaltonetworks.panos.panos_op_payload.zip/ansible_collections/paloaltonetworks/panos/plugins/modules/panos_op.py", line 186, in main
  File "/home/r0m/.local/lib/python3.9/site-packages/panos/firewall.py", line 242, in op
    return super(Firewall, self).op(
  File "/home/r0m/.local/lib/python3.9/site-packages/panos/base.py", line 4047, in op
    element = self.xapi.op(cmd, vsys, False, extra_qs, retry_on_peer=retry_on_peer)
  File "/home/r0m/.local/lib/python3.9/site-packages/panos/base.py", line 3899, in method
    raise the_exception
fatal: [fw-test]: FAILED! =&amp;gt; {
    "changed": false,
    "invocation": {
        "module_args": {
            "api_key": null,
            "cmd": "load config partial mode replace from capirca.xml",
            "cmd_is_xml": false,
            "ignore_disconnect": null,
            "ip_address": null,
            "password": null,
            "port": 443,
            "provider": {
                "api_key": null,
                "ip_address": "fw-test.local.r0.me",
                "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                "port": 443,
                "serial_number": null,
                "username": "admin"
            },
            "username": "admin",
            "vsys": "vsys1"
        }
    },
    "msg": "Failed to run command : load config partial mode replace from \"capirca.xml\" :  load -&amp;gt; config -&amp;gt; partial -&amp;gt; mode is invalid"&lt;/LI-CODE&gt;
&lt;P&gt;It's worth noting that this command is working. Unfortunately, I really need a partial load.&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;- name: load configuration
      paloaltonetworks.panos.panos_op:
        provider: "{{ palo_provider }}" 
        cmd: 'load config from capirca.xml'
        cmd_is_xml: false&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;Will anyone be able to help me with partial config load automation ?&lt;/P&gt;
&lt;P&gt;Regards !&lt;/P&gt;
&lt;P&gt;Romain&lt;/P&gt;</description>
      <pubDate>Thu, 29 Dec 2022 18:07:16 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/next-generation-firewall/automation-of-partial-config-load-from-xml/m-p/525487#M715</guid>
      <dc:creator>r000m5</dc:creator>
      <dc:date>2022-12-29T18:07:16Z</dc:date>
    </item>
    <item>
      <title>Re: Automation of partial config load from xml</title>
      <link>https://live.paloaltonetworks.com/t5/next-generation-firewall/automation-of-partial-config-load-from-xml/m-p/525531#M716</link>
      <description>&lt;P&gt;I found the solution :&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;    - name: load configuration
      paloaltonetworks.panos.panos_op:
        provider: "{{ palo_provider }}"
        cmd: '&amp;lt;load&amp;gt;&amp;lt;config&amp;gt;&amp;lt;partial&amp;gt;&amp;lt;from-xpath&amp;gt;/config/devices/entry[@name=&amp;amp;quot;localhost.localdomain&amp;amp;quot;]/vsys/entry[@name=&amp;amp;quot;vsys1&amp;amp;quot;]&amp;lt;/from-xpath&amp;gt;&amp;lt;to-xpath&amp;gt;/config/devices/entry[@name=&amp;amp;quot;localhost.localdomain&amp;amp;quot;]/vsys/entry[@name=&amp;amp;quot;vsys1&amp;amp;quot;]&amp;lt;/to-xpath&amp;gt;&amp;lt;mode&amp;gt;replace&amp;lt;/mode&amp;gt;&amp;lt;from&amp;gt;capirca.xml&amp;lt;/from&amp;gt;&amp;lt;/partial&amp;gt;&amp;lt;/config&amp;gt;&amp;lt;/load&amp;gt;'
        cmd_is_xml: true&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;I was able to get the xml version of the command using&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;debug cli on&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Dec 2022 14:06:12 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/next-generation-firewall/automation-of-partial-config-load-from-xml/m-p/525531#M716</guid>
      <dc:creator>r000m5</dc:creator>
      <dc:date>2022-12-30T14:06:12Z</dc:date>
    </item>
  </channel>
</rss>

