2014-11-14 22:14:08 +00:00
# Copyright 2013 Dag Wieers <dag@wieers.com>
2014-10-02 17:07:05 +00:00
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
2015-08-28 15:35:43 +00:00
2015-04-13 20:28:01 +00:00
from __future__ import ( absolute_import , division , print_function )
__metaclass__ = type
2014-10-15 23:18:12 +00:00
2015-10-16 00:55:23 +00:00
from ansible . compat . six import iteritems
2015-08-04 17:30:47 +00:00
2014-11-14 22:14:08 +00:00
from ansible . plugins . action import ActionBase
2015-01-15 22:56:54 +00:00
from ansible . utils . boolean import boolean
2015-08-28 15:35:43 +00:00
from ansible . utils . vars import isidentifier
2014-10-15 23:18:12 +00:00
2015-08-04 17:30:47 +00:00
2014-11-14 22:14:08 +00:00
class ActionModule ( ActionBase ) :
TRANSFERS_FILES = False
2015-10-22 23:07:26 +00:00
def run ( self , tmp = None , task_vars = None ) :
if task_vars is None :
task_vars = dict ( )
result = super ( ActionModule , self ) . run ( tmp , task_vars )
2015-01-15 07:13:45 +00:00
facts = dict ( )
if self . _task . args :
2015-09-03 06:23:27 +00:00
for ( k , v ) in iteritems ( self . _task . args ) :
2015-05-04 06:33:10 +00:00
k = self . _templar . template ( k )
2015-08-04 17:30:47 +00:00
if not isidentifier ( k ) :
2015-10-22 23:07:26 +00:00
result [ ' failed ' ] = True
result [ ' msg ' ] = " The variable name ' %s ' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores. " % k
return result
2015-08-04 17:30:47 +00:00
2015-01-15 22:56:54 +00:00
if isinstance ( v , basestring ) and v . lower ( ) in ( ' true ' , ' false ' , ' yes ' , ' no ' ) :
v = boolean ( v )
2015-01-15 07:13:45 +00:00
facts [ k ] = v
2015-10-22 23:07:26 +00:00
result [ ' changed ' ] = False
result [ ' ansible_facts ' ] = facts
return result