mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #15144 from mattclay/winrm-test
Add winrm tests and fix exposed unicode errors.
This commit is contained in:
commit
3f70d7a70d
4 changed files with 61 additions and 5 deletions
|
@ -247,9 +247,9 @@ class Connection(ConnectionBase):
|
|||
|
||||
# FUTURE: determine buffer size at runtime via remote winrm config?
|
||||
def _put_file_stdin_iterator(self, in_path, out_path, buffer_size=250000):
|
||||
in_size = os.path.getsize(in_path)
|
||||
in_size = os.path.getsize(to_bytes(in_path, errors='strict'))
|
||||
offset = 0
|
||||
with open(in_path, 'rb') as in_file:
|
||||
with open(to_bytes(in_path, errors='strict'), 'rb') as in_file:
|
||||
for out_data in iter((lambda:in_file.read(buffer_size)), ''):
|
||||
offset += len(out_data)
|
||||
self._display.vvvvv('WINRM PUT "%s" to "%s" (offset=%d size=%d)' % (in_path, out_path, offset, len(out_data)), host=self._winrm_host)
|
||||
|
@ -265,7 +265,7 @@ class Connection(ConnectionBase):
|
|||
super(Connection, self).put_file(in_path, out_path)
|
||||
out_path = self._shell._unquote(out_path)
|
||||
display.vvv('PUT "%s" TO "%s"' % (in_path, out_path), host=self._winrm_host)
|
||||
if not os.path.exists(in_path):
|
||||
if not os.path.exists(to_bytes(in_path, errors='strict')):
|
||||
raise AnsibleFileNotFound('file or module does not exist: "%s"' % in_path)
|
||||
|
||||
script_template = u'''
|
||||
|
@ -366,9 +366,9 @@ class Connection(ConnectionBase):
|
|||
else:
|
||||
if not out_file:
|
||||
# If out_path is a directory and we're expecting a file, bail out now.
|
||||
if os.path.isdir(out_path):
|
||||
if os.path.isdir(to_bytes(out_path, errors='strict')):
|
||||
break
|
||||
out_file = open(out_path, 'wb')
|
||||
out_file = open(to_bytes(out_path, errors='strict'), 'wb')
|
||||
out_file.write(data)
|
||||
if len(data) < buffer_size:
|
||||
break
|
||||
|
|
|
@ -102,6 +102,13 @@ test_connection: setup
|
|||
$(call TEST_CONNECTION_CMD)
|
||||
$(call TEST_CONNECTION_CMD, LC_ALL=C LANG=C)
|
||||
|
||||
# Connection plugin test command to repeat with each locale setting. WinRM specific version.
|
||||
TEST_CONNECTION_WINRM_CMD = $(1) ansible-playbook test_connection_winrm.yml -i inventory.winrm $(TEST_FLAGS)
|
||||
|
||||
test_connection_winrm: setup
|
||||
$(call TEST_CONNECTION_WINRM_CMD)
|
||||
$(call TEST_CONNECTION_WINRM_CMD, LC_ALL=C LANG=C)
|
||||
|
||||
destructive: setup
|
||||
ansible-playbook destructive.yml -i $(INVENTORY) -e outputdir=$(TEST_DIR) -e @$(VARS_FILE) $(CREDENTIALS_ARG) -v $(TEST_FLAGS)
|
||||
|
||||
|
|
|
@ -5,3 +5,15 @@ server ansible_ssh_host=10.10.10.10 ansible_ssh_user=Administrator ansible_ssh_p
|
|||
ansible_connection=winrm
|
||||
# HTTPS uses 5986, HTTP uses 5985
|
||||
ansible_ssh_port=5985
|
||||
|
||||
[winrm]
|
||||
winrm-pipelining ansible_ssh_pipelining=true
|
||||
winrm-no-pipelining ansible_ssh_pipelining=false
|
||||
|
||||
[winrm:vars]
|
||||
ansible_connection=winrm
|
||||
ansible_host=somehost
|
||||
ansible_user=someuser
|
||||
ansible_password=somepassword
|
||||
ansible_port=5986
|
||||
ansible_winrm_server_cert_validation=ignore
|
||||
|
|
37
test/integration/test_connection_winrm.yml
Normal file
37
test/integration/test_connection_winrm.yml
Normal file
|
@ -0,0 +1,37 @@
|
|||
- hosts: winrm
|
||||
gather_facts: no
|
||||
serial: 1
|
||||
tasks:
|
||||
|
||||
### raw with unicode arg and output
|
||||
|
||||
- name: raw with unicode arg and output
|
||||
raw: echo 汉语
|
||||
register: command
|
||||
- name: check output of raw with unicode arg and output
|
||||
assert: { that: "'汉语' in command.stdout" }
|
||||
|
||||
### copy local file with unicode filename and content
|
||||
|
||||
- name: create local file with unicode filename and content
|
||||
local_action: lineinfile dest=/tmp/ansible-local-汉语/汉语.txt create=true line=汉语
|
||||
- name: remove remote file with unicode filename and content
|
||||
win_file: path=c:/windows/temp/ansible-remote-汉语/汉语.txt state=absent
|
||||
- name: create remote directory with unicode name
|
||||
win_file: path=c:/windows/temp/ansible-remote-汉语 state=directory
|
||||
- name: copy local file with unicode filename and content
|
||||
win_copy: src=/tmp/ansible-local-汉语/汉语.txt dest=c:/windows/temp/ansible-remote-汉语/汉语.txt
|
||||
|
||||
### fetch remote file with unicode filename and content
|
||||
|
||||
- name: remove local file with unicode filename and content
|
||||
local_action: file path=/tmp/ansible-local-汉语/汉语.txt state=absent
|
||||
- name: fetch remote file with unicode filename and content
|
||||
fetch: src=c:/windows/temp/ansible-remote-汉语/汉语.txt dest=/tmp/ansible-local-汉语/汉语.txt fail_on_missing=true validate_checksum=true flat=true
|
||||
|
||||
### remove local and remote temp files
|
||||
|
||||
- name: remove local temp file
|
||||
local_action: file path=/tmp/ansible-local-汉语 state=absent
|
||||
- name: remove remote temp file
|
||||
win_file: path=c:/windows/temp/ansible-remote-汉语 state=absent
|
Loading…
Reference in a new issue