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.
|
# This particular file snippet, and this file snippet only, is BSD licensed.
|
||||||
# Modules you write using this snippet, which is embedded dynamically by Ansible
|
# 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
|
# 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
|
$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
|
# Helper function to convert a powershell object to JSON to echo it, exiting
|
||||||
# the script
|
# the script
|
||||||
# Example: Exit-Json $result
|
# Example: Exit-Json $result
|
||||||
|
@ -85,7 +65,7 @@ Function Exit-Json($obj)
|
||||||
$obj = New-Object psobject
|
$obj = New-Object psobject
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $obj | ConvertTo-Json
|
echo $obj | ConvertTo-Json -Depth 99
|
||||||
Exit
|
Exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,10 +89,35 @@ Function Fail-Json($obj, $message = $null)
|
||||||
|
|
||||||
Set-Attr $obj "msg" $message
|
Set-Attr $obj "msg" $message
|
||||||
Set-Attr $obj "failed" $true
|
Set-Attr $obj "failed" $true
|
||||||
echo $obj | ConvertTo-Json
|
echo $obj | ConvertTo-Json -Depth 99
|
||||||
Exit 1
|
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
|
# Helper filter/pipeline function to convert a value to boolean following current
|
||||||
# Ansible practices
|
# Ansible practices
|
||||||
# Example: $is_true = "true" | ConvertTo-Bool
|
# Example: $is_true = "true" | ConvertTo-Bool
|
||||||
|
@ -136,3 +141,4 @@ Function ConvertTo-Bool
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,27 @@ $capacity = 0
|
||||||
$memory | foreach {$capacity += $_.Capacity}
|
$memory | foreach {$capacity += $_.Capacity}
|
||||||
$netcfg = Get-WmiObject win32_NetworkAdapterConfiguration
|
$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_hostname" $env:COMPUTERNAME;
|
||||||
Set-Attr $result.ansible_facts "ansible_fqdn" "$([System.Net.Dns]::GetHostByName((hostname)).HostName)"
|
Set-Attr $result.ansible_facts "ansible_fqdn" "$([System.Net.Dns]::GetHostByName((hostname)).HostName)"
|
||||||
Set-Attr $result.ansible_facts "ansible_system" $osversion.Platform.ToString()
|
Set-Attr $result.ansible_facts "ansible_system" $osversion.Platform.ToString()
|
||||||
|
|
Loading…
Reference in a new issue