win_disk_image: return all mount paths in return value (#44799)

This commit is contained in:
Jordan Borean 2018-08-30 16:25:45 +10:00 committed by GitHub
parent 78eb4724a0
commit 533656694e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 8 deletions

View file

@ -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.

View file

@ -201,6 +201,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
=======

View file

@ -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") {

View file

@ -32,10 +32,15 @@ author:
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'''
@ -48,7 +53,7 @@ EXAMPLES = r'''
- 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