�
�Udac @` s� d d l m Z m Z m Z e Z i d d 6d g d 6d d 6Z d Z d Z d
Z d d l
m Z d � Z d
� Z
d � Z d � Z d � Z d � Z e d k r� e � n d S( i ( t absolute_importt divisiont print_functions 1.1t metadata_versiont previewt statust communityt supported_bys
---
author:
- Kairo Araujo (@kairoaraujo)
module: aix_devices
short_description: Manages AIX devices
description:
- This module discovers, defines, removes and modifies attributes of AIX devices.
version_added: '2.8'
options:
attributes:
description:
- A list of device attributes.
type: dict
device:
description:
- The name of the device.
- C(all) is valid to rescan C(available) all devices (AIX cfgmgr command).
type: str
required: true
force:
description:
- Forces action.
type: bool
default: no
recursive:
description:
- Removes or defines a device and children devices.
type: bool
default: no
state:
description:
- Controls the device state.
- C(available) (alias C(present)) rescan a specific device or all devices (when C(device) is not specified).
- C(removed) (alias C(absent) removes a device.
- C(defined) changes device to Defined state.
type: str
choices: [ available, defined, removed ]
default: available
sT
- name: Scan new devices
aix_devices:
device: all
state: available
- name: Scan new virtual devices (vio0)
aix_devices:
device: vio0
state: available
- name: Removing IP alias to en0
aix_devices:
device: en0
attributes:
delalias4: 10.0.0.100,255.255.255.0
- name: Removes ent2
aix_devices:
device: ent2
state: removed
- name: Put device en2 in Defined
aix_devices:
device: en2
state: defined
- name: Removes ent4 (inexistent).
aix_devices:
device: ent4
state: removed
- name: Put device en4 in Defined (inexistent)
aix_devices:
device: en4
state: defined
- name: Put vscsi1 and children devices in Defined state.
aix_devices:
device: vscsi1
recursive: yes
state: defined
- name: Removes vscsi1 and children devices.
aix_devices:
device: vscsi1
recursive: yes
state: removed
- name: Changes en1 mtu to 9000 and disables arp.
aix_devices:
device: en1
attributes:
mtu: 900
arp: off
state: available
- name: Configure IP, netmask and set en1 up.
aix_devices:
device: en1
attributes:
netaddr: 192.168.0.100
netmask: 255.255.255.0
state: up
state: available
- name: Adding IP alias to en0
aix_devices:
device: en0
attributes:
alias4: 10.0.0.100,255.255.255.0
state: available
s # ( t
AnsibleModulec C` s� | j d t � } | j d | d d d | g � \ } } } | d k ri | j d d d | d | � n | r� | j � d
} t | f Sd } t | f S( s�
Check if device already exists and the state.
Args:
module: Ansible module.
device: device to be checked.
Returns: bool, device state
t lsdevs %ss -Cs -li t msgs Failed to run lsdevt rct erri N( t get_bin_patht Truet run_commandt fail_jsont splitt Nonet False( t modulet devicet lsdev_cmdR t lsdev_outR t device_state( ( sF /usr/lib/python2.7/site-packages/ansible/modules/system/aix_devices.pyt
_check_device� s
,
c C` s� | j d t � } | j d | d d | d d | g � \ } } } d d g } | d k r| | | k rr d } n d } | S| d k r� | j d
d | d | d
| � n | j � d } | S( s�
Args:
module: Ansible module.
device: device to check attributes.
attr: attribute to be checked.
Returns:
t lsattrs %ss -Els -at delalias4t delalias6i� t i R
s Failed to run lsattr: %sR R i N( R
R R R R R ( R R t attrt
lsattr_cmdR t
lsattr_outR t hidden_attrst
current_param( ( sF /usr/lib/python2.7/site-packages/ansible/modules/system/aix_devices.pyt _check_device_attr� s 3 #c C` s� | j d t � } | d k r+ d | } n d } t } d } | j s{ | j d | d | g � \ } } } t } | } n | | f S( s Discover AIX devices.t cfgmgrs -l %sR s %sN( R
R R t
check_modeR ( R R t
cfgmgr_cmdt changedR
R t
cfgmgr_outR ( ( sF /usr/lib/python2.7/site-packages/ansible/modules/system/aix_devices.pyt discover_device� s
& c C` s g } g } g } | j d t � } x8t | j � � D]$} | | } t | | | � }
|
d k ru | j | � q7 |
| k rJ| r� d | d d | d d | | | f d | g } n+ d | d d | d d | | | f g } | j s6| j | � \ } }
} | d k r6| j d d d | d
| � q6n | j | | � q7 | j | | � q7 Wt
| � d k r�t } d d j | � } n t } d
} t
| � d k r�d d j | � } n d
} t
| � d k r�d d j | � } n d
} d | | | f } | | f S( s Change AIX device attribute. t chdevs %ss -ls -as %s=%si R
s Failed to run chdev.R R s Attributes changed: %s. t ,R s Attributes already set: %s. s Invalid attributes: %s s , s %s%s%sN(
R
R t listt keysR# R t appendR% R t exit_jsont lent joinR ( R t
attributesR t forcet attr_changedt attr_not_changedt attr_invalidt chdev_cmdR t new_paramR"