mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
New module: Support manipulating XML files (#25323)
* Import original unmodified upstream version This is another attempt to get the xml module upstream. https://github.com/cmprescott/ansible-xml/ This is the original file from upstream, without commit 1e7a3f6b6e2bc01aa9cebfd80ac5cd4555032774 * Add additional changes required for upstreaming This PR includes the following changes: - Clean up of DOCUMENTATION - Rename "ensure" parameter to "state" parameter (kept alias) - Added EXAMPLES - Remove explicit type-case using str() for formatting - Clean up AnsibleModule parameter handling - Retained Python 2.4 compatibility - PEP8 compliancy - Various fixes as suggested by abadger during first review This fixes cmprescott/ansible-xml#108 * Added original integration tests There is some room for improvement wrt. idempotency and check-mode testing. * Some tests depend on lxml v3.0alpha1 or higher We are now expecting lxml v2.3.0 or higher. We skips tests if lxml is too old. Plus small fix. * Relicense to GPLv3+ header All past contributors have agreed to relicense this module to GPLv2+, and GPLv3 specifically. See: https://github.com/cmprescott/ansible-xml/issues/113 This fixes cmprescott/ansible-xml#73 * Fix small typo in integration tests * Python 3 support This PR also includes: - Python 3 support - Documentation fixes - Check-mode fixes and improvements - Bugfix in check-mode support - Always return xmlstring, even if there's no change - Check for lxml 2.3.0 or newer * Add return values * Various fixes after review
This commit is contained in:
parent
923445a484
commit
6874ba23ff
61 changed files with 2003 additions and 0 deletions
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer>Окское</beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer>Old Rasputin</beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer>Natty Lite</beer><beer>Miller Lite</beer><beer>Coors Lite</beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer name="Окское" type="экстра"/></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer name="Ansible Brew" type="light"/></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer color="red">George Killian's Irish Red</beer>
|
||||
<beer origin="CZ" color="blonde">Pilsner Urquell</beer>
|
||||
</beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
<validxhtml validateon=""/>
|
||||
</website>
|
||||
<phonenumber>555-555-1234</phonenumber>
|
||||
<owner dob="1976-04-12">
|
||||
<name>
|
||||
<last>Smith</last>
|
||||
<first>John</first>
|
||||
<middle>Q</middle>
|
||||
</name>
|
||||
</owner>
|
||||
<website_bis>
|
||||
<validxhtml validateon=""/>
|
||||
</website_bis>
|
||||
<testnormalelement>xml tag with no special characters</testnormalelement>
|
||||
<test-with-dash>xml tag with dashes</test-with-dash>
|
||||
<test-with-dash.and.dot>xml tag with dashes and dots</test-with-dash.and.dot>
|
||||
<test-with.dash_and.dot_and-underscores>xml tag with dashes, dots and underscores</test-with.dash_and.dot_and-underscores>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers xmlns="http://test.beers">
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer>Old Rasputin</beer></beers>
|
||||
<rating xmlns="http://test.rating" attr:subjective="true">10</rating>
|
||||
<website xmlns="http://test.website">
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
15
test/integration/targets/xml/results/test-pretty-print.xml
Normal file
15
test/integration/targets/xml/results/test-pretty-print.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
<beer>Old Rasputin</beer>
|
||||
</beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating>10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
13
test/integration/targets/xml/results/test-remove-element.xml
Normal file
13
test/integration/targets/xml/results/test-remove-element.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers xmlns="http://test.beers">
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating xmlns="http://test.rating">10</rating>
|
||||
<website xmlns="http://test.website">
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers xmlns="http://test.beers">
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<website xmlns="http://test.website">
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating subjective="нет">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating subjective="false">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer alcohol="0.5" name="90 Minute IPA"><Water liter="0.2" quantity="200g"/><Starch quantity="10g"/><Hops quantity="50g"/><Yeast quantity="20g"/></beer><beer alcohol="0.3" name="Harvest Pumpkin Ale"><Water liter="0.2" quantity="200g"/><Hops quantity="25g"/><Yeast quantity="20g"/></beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Окское</beer><beer>Невское</beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>90 Minute IPA</beer><beer>Harvest Pumpkin Ale</beer></beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating subjective="true">10</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address></address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating subjective="true">пять</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
<rating>пять</rating></business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers>
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating subjective="true">5</rating>
|
||||
<website>
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
<rating>5</rating></business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers xmlns="http://test.beers">
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating xmlns="http://test.rating" attr:subjective="false">10</rating>
|
||||
<website xmlns="http://test.website">
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<business xmlns="http://test.business" xmlns:attr="http://test.attribute" type="bar">
|
||||
<name>Tasty Beverage Co.</name>
|
||||
<beers xmlns="http://test.beers">
|
||||
<beer>Rochefort 10</beer>
|
||||
<beer>St. Bernardus Abbot 12</beer>
|
||||
<beer>Schlitz</beer>
|
||||
</beers>
|
||||
<rating xmlns="http://test.rating" attr:subjective="true">11</rating>
|
||||
<website xmlns="http://test.website">
|
||||
<mobilefriendly/>
|
||||
<address>http://tastybeverageco.com</address>
|
||||
</website>
|
||||
</business>
|
Loading…
Add table
Add a link
Reference in a new issue