1010import os
1111import tempfile
1212
13+ from ansible .module_utils .common .text .converters import to_text
1314from ansible .plugins .action import ActionBase
1415from ansible .utils .display import Display
1516from ansible .utils .hashing import checksum
@@ -28,6 +29,17 @@ def __init__(self, *args, **kwargs):
2829 def run (self , tmp = None , task_vars = None ):
2930 result = super (ActionModule , self ).run (task_vars = task_vars )
3031
32+ persistent_connection = self ._play_context .connection .split ("." )[- 1 ]
33+ if persistent_connection != "network_cli" :
34+ # It is supported only with network_cli
35+ return {
36+ "failed" : True ,
37+ "msg" : (
38+ "connection type %s is not valid for net_put module, please use fully "
39+ "qualified name of network_cli connection type" % self ._play_context .connection
40+ ),
41+ }
42+
3143 try :
3244 self ._src = self ._task .args .get ("src" )
3345 except KeyError as exc :
@@ -65,27 +77,20 @@ def run(self, tmp=None, task_vars=None):
6577 )
6678
6779 try :
68- self ._connection ._ssh_type_conn . fetch_file (self ._dest , fetched_fp , self ._protocol )
80+ self ._connection .get_file (self ._dest , fetched_fp , self ._protocol )
6981 except Exception as exc :
82+ error = to_text (exc ).lower ()
7083 if not (
71- "Error receiving information about file" in exc . message
72- and "No such file or directory" in exc . message
84+ "error receiving information about file" in error
85+ or "no such file or directory" in error
7386 ):
7487 raise exc
75- display .vv ("The file is not present on the remote device" )
76- finally :
77- self ._connection ._ssh_type_conn .reset ()
78- self ._dest_checksum = checksum (fetched_fp )
88+ self ._dest_checksum = checksum (fetched_fp )
7989
80- try :
81- if self ._dest_checksum != self ._rendered_checksum :
82- self ._connection ._ssh_type_conn .put_file (
83- self ._loader .get_real_file (self ._rendered_real_file ),
84- self ._dest ,
85- self ._protocol ,
86- )
87- finally :
88- self ._connection ._ssh_type_conn .reset ()
90+ if self ._dest_checksum != self ._rendered_checksum :
91+ self ._connection .copy_file (
92+ self ._loader .get_real_file (self ._rendered_real_file ), self ._dest , self ._protocol
93+ )
8994
9095 return result
9196 finally :
0 commit comments