Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

win_disk_image: return all mount paths in return value #44799

Merged
merged 1 commit into from
Aug 30, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelogs/fragments/win_disk_image-mount-paths.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
minor_changes:
- win_disk_image - return a list of mount paths with the return value ``mount_paths``, this will always be a list and contain all mount points in an image
deprecated_features:
- win_disk_image - the return value ``mount_path`` is deprecated and will be removed in 2.11, this can be accessed through ``mount_paths[0]`` instead.
2 changes: 2 additions & 0 deletions docs/docsite/rst/porting_guides/porting_guide_2.7.rst
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ Noteworthy module changes

* The ``interface_name`` module option for ``na_ontap_net_vlan`` has been removed and should be removed from your playbooks

* The ``win_disk_image`` module has deprecated the return value ``mount_path``, use ``mount_paths[0]`` instead. This will
be removed in Ansible 2.11.

Plugins
=======
Expand Down
14 changes: 8 additions & 6 deletions lib/ansible/modules/windows/win_disk_image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -49,19 +49,21 @@ If($state -eq "present") {

If($di.Attached) { # only try to get the mount_path if the disk is attached (
If($di.StorageType -eq 1) { # ISO, we can get the mountpoint directly from Get-Volume
$drive_letter = ($di | Get-Volume).DriveLetter
$drive_letters = ($di | Get-Volume).DriveLetter
}
ElseIf($di.StorageType -in @(2,3)) { # VHD/VHDX, need Get-Disk + Get-Partition to discover mountpoint
# FUTURE: support multi-partition VHDs
$drive_letter = ($di | Get-Disk | Get-Partition)[0].DriveLetter
$drive_letters = ($di | Get-Disk | Get-Partition).DriveLetter
}
# remove any null entries (no drive letter)
$drive_letters = $drive_letters | Where-Object { $_ }


If(-not $drive_letter) {
If(-not $drive_letters) {
Fail-Json -message "Unable to retrieve drive letter from mounted image"
}

$result.mount_path = $drive_letter + ":\"
# mount_path is deprecated and will be removed in 2.11, use mount_paths which contains all the partitions instead
$result.mount_path = $drive_letters[0] + ":\"
$result.mount_paths = @($drive_letters | ForEach-Object { "$($_):\" })
}
}
ElseIf($state -eq "absent") {
Expand Down
9 changes: 7 additions & 2 deletions lib/ansible/modules/windows/win_disk_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,15 @@

RETURN = r'''
mount_path:
description: filesystem path where the target image is mounted
description: filesystem path where the target image is mounted, this has been deprecated in favour of C(mount_paths)
returned: when C(state) is C(present)
type: string
sample: F:\
mount_paths:
description: a list of filesystem paths mounted from the target image
returned: when C(state) is C(present)
type: list
sample: [ 'E:\', 'F:\' ]
'''

EXAMPLES = r'''
Expand All @@ -48,7 +53,7 @@

- name: Run installer from mounted iso
win_package:
path: '{{ disk_image_out.mount_path }}setup\setup.exe'
path: '{{ disk_image_out.mount_paths[0] }}setup\setup.exe'
product_id: 35a4e767-0161-46b0-979f-e61f282fee21
state: present

Expand Down