Initial commit
[ta/infra-ansible.git] / roles / initial_poweroff_hosts / library / xml_parse_macs.py
1 #!/usr/bin/python
2
3 # Copyright 2019 Nokia
4
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 import xml.etree.ElementTree as ET
18
19 DOCUMENTATION = '''
20 ---
21 '''
22
23 def main():
24     module = AnsibleModule(
25         argument_spec=dict(
26             xml_file=dict(required=True),
27         ),
28     )
29
30     defaults = module.params.copy()
31     xml_file = defaults.pop('xml_file', None)
32
33     try:
34         tree = ET.parse(xml_file)
35         root = tree.getroot()
36     except IOError as e:
37         module.fail_json(msg=str(e))
38
39     for child in root:
40         if child.tag == 'devices':
41             devices=child
42             break;
43
44     mac_list = []
45     for child in devices:
46         if child.tag == 'interface':
47             for detail in child:
48                 if detail.tag == 'mac':
49                     mac_list.append(detail.attrib['address'])
50
51     module.exit_json(
52         changed=True,
53         mac_list=mac_list,
54     )
55
56 from ansible.module_utils.basic import *
57
58
59 if __name__ == '__main__':
60     main()