Merge pull request #8812 from trondhindenes/win_json_facts_setup_improvements
win_json_facts_setup_improvements; All changes referenced in PRs #8767 , #8768 , #8769
This commit is contained in:
commit
69e7999586
2 changed files with 49 additions and 22 deletions
|
@ -1,4 +1,3 @@
|
|||
|
||||
# This particular file snippet, and this file snippet only, is BSD licensed.
|
||||
# Modules you write using this snippet, which is embedded dynamically by Ansible
|
||||
# still belong to the author of the module, and may assign their own license
|
||||
|
@ -55,25 +54,6 @@ Function Set-Attr($obj, $name, $value)
|
|||
$obj | Add-Member -Force -MemberType NoteProperty -Name $name -Value $value
|
||||
}
|
||||
|
||||
# Helper function to get an "attribute" from a psobject instance in powershell.
|
||||
# This is a convenience to make getting Members from an object easier and
|
||||
# slightly more pythonic
|
||||
# Example: $attr = Get-Attr $response "code" -default "1"
|
||||
Function Get-Attr($obj, $name, $default = $null)
|
||||
{
|
||||
# Check if the provided Member $name exists in $obj and return it or the
|
||||
# default
|
||||
If ($obj.$name.GetType)
|
||||
{
|
||||
$obj.$name
|
||||
}
|
||||
Else
|
||||
{
|
||||
$default
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# Helper function to convert a powershell object to JSON to echo it, exiting
|
||||
# the script
|
||||
# Example: Exit-Json $result
|
||||
|
@ -85,7 +65,7 @@ Function Exit-Json($obj)
|
|||
$obj = New-Object psobject
|
||||
}
|
||||
|
||||
echo $obj | ConvertTo-Json
|
||||
echo $obj | ConvertTo-Json -Depth 99
|
||||
Exit
|
||||
}
|
||||
|
||||
|
@ -109,10 +89,35 @@ Function Fail-Json($obj, $message = $null)
|
|||
|
||||
Set-Attr $obj "msg" $message
|
||||
Set-Attr $obj "failed" $true
|
||||
echo $obj | ConvertTo-Json
|
||||
echo $obj | ConvertTo-Json -Depth 99
|
||||
Exit 1
|
||||
}
|
||||
|
||||
# Helper function to get an "attribute" from a psobject instance in powershell.
|
||||
# This is a convenience to make getting Members from an object easier and
|
||||
# slightly more pythonic
|
||||
# Example: $attr = Get-Attr $response "code" -default "1"
|
||||
#Note that if you use the failifempty option, you do need to specify resultobject as well.
|
||||
Function Get-Attr($obj, $name, $default = $null,$resultobj, $failifempty=$false, $emptyattributefailmessage)
|
||||
{
|
||||
# Check if the provided Member $name exists in $obj and return it or the
|
||||
# default
|
||||
If ($obj.$name.GetType)
|
||||
{
|
||||
$obj.$name
|
||||
}
|
||||
Elseif($failifempty -eq $false)
|
||||
{
|
||||
$default
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$emptyattributefailmessage) {$emptyattributefailmessage = "Missing required argument: $name"}
|
||||
Fail-Json -obj $resultobj -message $emptyattributefailmessage
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# Helper filter/pipeline function to convert a value to boolean following current
|
||||
# Ansible practices
|
||||
# Example: $is_true = "true" | ConvertTo-Bool
|
||||
|
@ -136,3 +141,4 @@ Function ConvertTo-Bool
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,27 @@ $capacity = 0
|
|||
$memory | foreach {$capacity += $_.Capacity}
|
||||
$netcfg = Get-WmiObject win32_NetworkAdapterConfiguration
|
||||
|
||||
$ActiveNetcfg = @(); $ActiveNetcfg+= $netcfg | where {$_.ipaddress -ne $null}
|
||||
$formattednetcfg = @()
|
||||
foreach ($adapter in $ActiveNetcfg)
|
||||
{
|
||||
$thisadapter = New-Object psobject @{
|
||||
interface_name = $adapter.description
|
||||
dns_domain = $adapter.dnsdomain
|
||||
default_gateway = $null
|
||||
interface_index = $adapter.InterfaceIndex
|
||||
}
|
||||
|
||||
if ($adapter.defaultIPGateway)
|
||||
{
|
||||
$thisadapter.default_gateway = $adapter.DefaultIPGateway[0].ToString()
|
||||
}
|
||||
|
||||
$formattednetcfg += $thisadapter;$thisadapter = $null
|
||||
}
|
||||
|
||||
Set-Attr $result.ansible_facts "ansible_interfaces" $formattednetcfg
|
||||
|
||||
Set-Attr $result.ansible_facts "ansible_hostname" $env:COMPUTERNAME;
|
||||
Set-Attr $result.ansible_facts "ansible_fqdn" "$([System.Net.Dns]::GetHostByName((hostname)).HostName)"
|
||||
Set-Attr $result.ansible_facts "ansible_system" $osversion.Platform.ToString()
|
||||
|
|
Loading…
Reference in a new issue